MENTAで「Pandasとopenpyxlで既存のエクセルファイルにシートを追加する」という処理を実装サポートさせていただいたのですが少しはまったのでサンプルをメモしておきます
前準備
pandasの内部でopenpyxlを使用しているのでopenpyxlもインストールしておく必要があります
$ pip install openpyxl
Pandasとopenpyxlで既存のエクセルファイルにシートを追加するサンプルプログラム
デフォルトでは、エクセル操作ライブラリに xlsxwriter が選択されてしまい、追記モードでは Append mode is not supported with xlsxwriter! というエラーが発生してしまいます。これを回避するために engine=’openpyxl’ を指定する必要があります。
import pandas as pd import openpyxl excel_path = '/content/sya2_pallet_webhook.xlsx' df = pd.DataFrame([[1],[1],[1]],columns=['col_name1']) with pd.ExcelWriter(excel_path, engine='openpyxl', mode='a') as writer: df.to_excel(writer, sheet_name='add_sheet') wb = openpyxl.load_workbook(excel_path) print(wb.get_sheet_names()) #シートが追加されたか確認
上記コードを実行すると既存のシートの後ろに「add_sheet」というシートが新しく作成されていることが確認できます。追加したシートの中身は以下のコードで確認できます
df_sheet_index = pd.read_excel(excel_path, sheet_name='add_sheet', index_col=0) print(df_sheet_index.head())
関連記事:【Python】pd.read_excel()でxlsx読み込みの際にXLRDErrorが起きた件
関連記事:【Python】openpyxlで「Excelの数式」の読み込み・書き込み
関連記事:エクセルの複数シートにデータフレームを出力・追記する
コメント