Python、同一Excelファイル・複数シートへの書き込み

前提

Python を用いて業務改善に取り組んでいます。

実現したいこと

各社員のタイムカードを集計し、一つのExcelファイルにシートを分けて書き込みを行いたいです。集計については完了しDataFrameまで出力できました。「◯月分出勤管理簿.xlsx」というファイルに、シート名を社員名として、集計したデータの書き込みを行いたいです。

発生している問題・エラーメッセージ

For文を用いて、社員毎にデータの集計を行っており、集計が終わると、[社員名]のシートを作成し、そこに書き込み、次の社員のデータ集計、シート作成、書き込みというふうにしたいのです。しかし、[社員名]というシートが追加されていくだけで、集計したデータの書き込みができません。以下にコードを添付します。

該当のソースコード

For文外の最初に下記のコードで◯月分出勤管理簿.xlsxを作成します。

Python

1import pandas as pd 2import openpyxl 3 4file_name=str(dt)+"月分出勤管理簿.xlsx"5#book作成6book = openpyxl.Workbook()7# 保存する8book.save(file_name)9 10browser = webdriver.Chrome()

そして、For文の最後に下記のコードでシートの追加・書き込み・保存を試みました

Python

1 df_xlsx=pd.DataFrame(data2)2 worker_name=browser.find_element_by_class_name('pagetitle').text.split(" ")[0]3 4 wb = openpyxl.load_workbook(file_name)5 wb.create_sheet(title=worker_name)6 7 #全レコードを'全体'シートに出力8 df_xlsx.to_excel(file_name, sheet_name =worker_name)9 10 11 #Excelファイルを保存12 wb.save(file_name)

この結果は変数worker_nameに格納された社員名のシートが追加されるのみで、[社員名]のシートにデータの書き込みが行われません。

試したこと

for文の最後のコードを以下のコードに書き換えたところ

df_noseyo_xlsx.to_excel(worker_name,index=False)

[社員名]というExcelファイルが社員人数分作成されます。

[追記]
wbを作成しているにも関わらず

df_xlsx.to_excel(file_name, sheet_name =worker_name)

の書き込みをしているのが間違いだと考えています。

ws=wb[worker_name]

でワークシートを作成し、書き込みを行えば良いのかとも考えましたが、
その場合、DataFrameのままでの書き込みの方法がわかりませんでした。

[追記]

wb = openpyxl.load_workbook(file_name) wb.create_sheet(title=worker_name) ws=wb[worker_name] ws=wb.active #全レコードを'全体'シートに出力 for row in data2: ws.append(row) #Excelファイルを保存 wb.save(file_name)

としたところ、ValueError: 日付 is not a valid column name とでました。
DataFrameは下記のようなものとなっています。
イメージ説明

補足情報(FW/ツールのバージョンなど)

Python,JupyterLabを使用しています。

コメントを投稿

0 コメント