前提
PythonのOpenPyXlモジュールを使用します。
用意されているエクセルのフォーマットをコピーし、コピーしたエクセルフォーマットに数値や文字列をプログラムで書き込み保存をするプログラムを書いています。
実現したいこと
プログラムを実行すると、openpyxl.load_workbook関数を実行する時点で以下の警告文が発生されます。この警告文は、エクセルのどこの設定による警告なのかを把握したいです。
※どこの設定によりエラーが発生するのかわかれば、エクセルのフォーマットを修正してエラー警告文が出ないようにできると考えた為。
UserWarning: Cannot parse header or footer so it will be ignored warn("""Cannot parse header or footer so it will be ignored""")
該当のソースコード(抜粋)
Python
1import os 2import openpyxl 3import shutil 4 5path = os.getcwd() 6inputfile = 'read.xlsx' 7 8i = 0 9while i < 3: 10 file_name = "file_" + str(i) + ".xlsx" 11 shutil.copy(inputfile, "output\\" + file_name) 12 os.chdir(path + "\\output") 13 workbook = openpyxl.load_workbook(file_name, data_only=True) 14 worksheet = workbook["test"] 15 worksheet.cell(row=1, column=1).value = "test" 16 workbook.save(file_name) 17 i += 1
試したこと
openpyxl.load_workbook関数のオプションを以下で試してみました。
- read_only=True ※読み込み専用になりエラー発生
- data_only=True ※警告文は変わらず
- keep_vba=True ※警告文は変わらず
- keep_links=True ※警告文は変わらず
以下サイトより
https://gammasoft.jp/blog/openpyxl-load-custom-format/
openpyxlのバージョンを2.6.0にすることで警告だった箇所がKeyErrorとなり手がかりが掴めそうなのでバージョンをおとして実行してみました。
→KeyError: 56となりましたが、56がなにを意図しているのかが不明でした。
以下ドキュメントに56の記載がありませんでした。
https://openpyxl.readthedocs.io/en/stable/_modules/openpyxl/styles/numbers.html
また以下のエラーとなりましたが、このエラーから手がかりが掴めませんでした。。。
workbook = openpyxl.load_workbook(file_name, data_only=True) File "C:\Users\xxx\Anaconda3\envs\xxx\lib\site-packages\openpyxl\reader\excel.py", line 312, in load_workbook reader.read() File "C:\Users\xxx\Anaconda3\envs\xxx\lib\site-packages\openpyxl\reader\excel.py", line 273, in read apply_stylesheet(self.archive, self.wb) File "C:\Users\xxx\Anaconda3\envs\xxx\lib\site-packages\openpyxl\styles\stylesheet.py", line 189, in apply_stylesheet stylesheet = Stylesheet.from_tree(node) File "C:\Users\xxx\Anaconda3\envs\xxx\lib\site-packages\openpyxl\styles\stylesheet.py", line 103, in from_tree return super(Stylesheet, cls).from_tree(node) File "C:\Users\xxx\Anaconda3\envs\xxx\lib\site-packages\openpyxl\descriptors\serialisable.py", line 104, in from_tree return cls(**attrib) File "C:\Users\xxx\Anaconda3\envs\xxx\lib\site-packages\openpyxl\styles\stylesheet.py", line 93, in __init__ self._normalise_numbers() File "C:\Users\xxx\Anaconda3\envs\xxx\lib\site-packages\openpyxl\styles\stylesheet.py", line 166, in _normalise_numbers fmt = BUILTIN_FORMATS[style.numFmtId] KeyError: 56
https://stackoverflow.com/questions/54106638/userwarning-cannot-parse-header-or-footer-so-it-will-be-ignored-on-loading-xl
上記サイトを確認し、エクセルフォーマットより、
ファイル->情報->問題のチェック->ドキュメントの検査->ヘッダーとフッターを削除しました。
しかし、警告エラーは相変わらず発生してしまいました。
補足情報(FW/ツールのバージョンなど)
openpyxl:2.6.1以上
office 2019
python 3.10.6

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。