1. ホーム
  2. python

[解決済み] 既存のExcelファイルにデータを上書きせずに書き込むには(pandasを使用)?

2022-04-28 19:05:09

質問

pandasを使って、以下のような手順でExcelファイルに書き込んでいます。

import pandas

writer = pandas.ExcelWriter('Masterfile.xlsx') 

data_filtered.to_excel(writer, "Main", cols=['Diff1', 'Diff2'])

writer.save()

Masterfile.xlsxは、すでにいくつかの異なるタブで構成されています。しかし、quot;Main"はまだ含まれていません。

Pandasは正しく"Main"シートに書き込みますが、残念ながら他のタブもすべて削除してしまいます。

どうすればいいですか?

Pandasのドキュメントによると、xlsxファイルにはopenpyxlを使用するそうです。のコードにざっと目を通すと ExcelWriter は、このようなものがうまくいくかもしれないというヒントを与えてくれます。

import pandas
from openpyxl import load_workbook

book = load_workbook('Masterfile.xlsx')
writer = pandas.ExcelWriter('Masterfile.xlsx', engine='openpyxl') 
writer.book = book

## ExcelWriter for some reason uses writer.sheets to access the sheet.
## If you leave it empty it will not know that sheet Main is already there
## and will create a new sheet.

writer.sheets = dict((ws.title, ws) for ws in book.worksheets)

data_filtered.to_excel(writer, "Main", cols=['Diff1', 'Diff2'])

writer.save()