前提・実現したいこと
既存のexcelファイルをテンプレートとしてコピーしてきたうえで、
複数シートにデータフレームの内容を書き込む処理を書きたいと考えています。
(ここでは簡単化のために単なる空の3シートのダミーシートを使っています。)
shutil.copyでコピーしてきたexcelファイルを使い、pandasのExcelWriterを使用して、
下記のような処理を記載しており、pandasの1.1.5では問題なく動作しておりました。
しかしながら、とある事情でpandasを1.2.0にアップデートしたとたん、下記のようなエラーで
該当処理が動作しなくなりました。
pandas 1.2.0の変更点を確認したのですが、何が原因かがわからず困っています。
お聞きしたいこと:
①エラーが出る原因、メカニズム
②pandas1.2.0以降で、複数のexcelシートに、dataframeの内容を書き込む、メンテナンスしやすい良い方法
発生している問題・エラーメッセージ
At least one sheet must be visible File "C:\test\pyinstaller_test_tqdm_px\ng_opx_exec.py", line 27, in <module> exl_w.book = opx.load_workbook(dst) During handling of the above exception, another exception occurred: File "C:\test\pyinstaller_test_tqdm_px\ng_opx_exec.py", line 32, in <module> clear_df.to_excel(exl_w, sheet_name="ccc", index=False, header=False)
該当のソースコード
Python
1 exe_path = Path(sys.argv[0]).parent 2 src = exe_path / Path("test.xlsx") 3 dst = exe_path / Path("test2.xlsx") 4 shutil.copy(src, dst) 5 print(dst) 6 with pd.ExcelWriter(dst, engine="openpyxl") as exl_w: 7 exl_w.book = opx.load_workbook(dst) 8 exl_w.sheets = dict((ws.title, ws) for ws in exl_w.book.worksheets) 9 clear_df = pd.DataFrame(np.zeros(300).reshape(20, 15)) 10 clear_df.to_excel(exl_w, sheet_name="aaa", index=False, header=False) 11 clear_df.to_excel(exl_w, sheet_name="bbb", index=False, header=False) 12 clear_df.to_excel(exl_w, sheet_name="ccc", index=False, header=False) 13
試したこと
pandas 1.2.0の変更点などについて調査した。
補足情報(FW/ツールのバージョンなど)
python 3.7.4
numpy 1.21.0
openpyxl 3.0.7
pandas 1.2.0(1.1.5では動作する)
回答1件
あなたの回答
tips
プレビュー