質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

Q&A

解決済

2回答

2031閲覧

Pandasをエクセルに貼り付ける。

chachamaru000

総合スコア19

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

0グッド

1クリップ

投稿2018/06/27 05:03

編集2018/06/27 06:08

# やりたいこと
# 申請したデータの進捗を調べてEXCELへ貼り付けたい。
■できていること
済:保存先フォルダを作成
済:貼り付けようEXCELがあるか確認→あれば開く、なければ作る処理
済:シート名
済:任意のサイトへログイン
済:申請不備になっているデータへ絞り込み
済:表示されたTableデータを取り込み
済:”次へ”が出た場合最後のページまでループで取り込みに行く
済:取り込んだデータに列を追加
済:貼り付け先エクセルファイルのシートを指定
済:最終列を調べる

未:to_excelでEXCELの最終行以降で貼り付け

#コード

Python

1from selenium import webdriver 2from selenium.webdriver.support.ui import Select 3from time import sleep 4from bs4 import BeautifulSoup as BS 5import sys 6import os 7import pandas as pd 8import openpyxl as excel 9import requests 10import re 11import ssl 12import datetime 13import math 14import tkinter as tk 15 16 #整える、インデックスをリセットしてつけ直す 17 dfALL.describe() 18 # 一番左に”NO”という項目を追加 19 df_r = dfALL.set_index('No') 20 # 一番右にclient名の列を追加し、client変数を代入 21 df_r.loc[:, 'クライアント'] = client 22 print(df_r) 23 24 #保存するEXCELファイルに該当のシートがあるか確認しに行く 25 EXL = excel.load_workbook('./保存用TEST/申請WEB取得.xlsx') 26 EXL.get_sheet_names()[0] 27 ws = EXL.get_sheet_by_name(EXL.get_sheet_names()[0]) 28 print(ws) 29 # 貼り付けるシートの最終行を調べる 30 c = ws.max_row + 1 31 print(str(c)) 32 33 #excelを開いて、新規シート作成してデータ貼り付け 34 writer = pd.ExcelWriter('./保存用TEST/申請WEB取得.xlsx') 35 df_r.to_excel(writer, ws, startrow=c) 36 logout = driver.find_element_by_xpath('//*[@id="j_id0:form:j_id13:j_id14:j_id28"]/ul/li/a').get_attribute('href') 37 driver.get(logout) 38 f = f + 1

#Errorコード

Error

1df_r.to_excel(writer, ws, startrow=c) 2 3#上記部分において下記のErrorが吐き出されます。 4 5TypeError, object of type 'Worksheet' has no len()

行列の追加の構文と、最終列の行数から貼り付けの2要素を追加するまでは正常に貼り付けできていたため、
おそらくこの部分の書き方か、もしくはそもそものコードに沿っていない書き方になってしまっているのだと思います。

言い訳になりませんが、まだ初めて2週間ほどの為、皆様のお知恵をお借りできればと思っております。
よろしくお願いいたします。

#追記 to_excelの第二引数はシート名について
最初の処理で、該当のEXCELファイルが存在有無を確認し、あれば開き、無ければ新規作成します。
次に日付時間が入力される形で新規シートを作成します。

Python

1now = datetime.datetime.now() 2SN1 = '申請_{0:%Y%m%d%p%H%M}'.format(now) 3 4wb = excel.Workbook() 5ws = wb.create_sheet(index = 0 ,title = SN1) 6SN2 = wb.sheetnames[0] 7wb.save('./保存用TEST//申請WEB取得.xlsx')

tp_excel時に
上記処理で作ったシートを指定して、最終列以降で追記を繰り返したかったので、

Python

1#EXCELを開いて、シートネームを取得※一番左に作ってある。 2EXL = excel.load_workbook('./保存用TEST/申請WEB取得.xlsx') 3EXL.get_sheet_names()[0] 4ws = EXL.get_sheet_by_name(EXL.get_sheet_names()[0])

と記載してしまいました。
このような場合の解決法もわかりましたらご教授いただけますと幸いです・・・><

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

たぶんやりたいことはこちらではないでしょうか?

既存excelファイルに新しいシートを追加する方法
https://qiita.com/hasepy/items/909c72e63bef0e37570b

投稿2018/06/27 06:00

barobaro

総合スコア1286

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

chachamaru000

2018/06/27 06:12

barobaroさん 追記させていただきました。 日付時間を追加したシートAを追加して、 その後処理したデータをシートAを指定して最終行から貼り付けたい。 というのが目的になります。 現在は 1)日付時間が入ったシートを一番左に作る。 ↓ 2)EXCEL開いて一番左のシート名を取得 ↓ 3)2)のシート名をexcel_toの第二引数に代入した。 が、2)がWS形式の為、エラーだという状態です。
barobaro

2018/06/27 06:21

to_excelの時点で他のシートは消えてしまいますがかまわないのでしょうか? wsはシート名ではないのでエラーになっています。 どのシート名が正しいのかいまいちわからないのですが ws = EXL.get_sheet_by_name(EXL.get_sheet_names()[0]) となっているので df_r.to_excel(writer, ws.title, startrow=c) でシートに保存できると思います。
guest

0

pandas.DataFrame.to_excel — pandas 0.23.1 documentation

第二引数はシート名(文字列)だと思いますが・・・

投稿2018/06/27 05:51

hayataka2049

総合スコア30933

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

chachamaru000

2018/06/27 05:59

hayataka2049さん 今から追記します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問