openpyxlで処理したエクセルファイルを開いたら、
「一部の内容に問題が見つかりました」という表示が出た…。
問題って何?いったいどうしたらいいの?
「問題」とか表示されると不安になりますよね…。
では今回は、「一部の内容に問題が見つかりました」
と表示される原因と対処法を解説します!
openpyxlで[一部の内容に問題が見つかりました]と表示される原因
※わかりやすさを重視しております。厳密には解釈が異なる場合がありますことをご了承ください。
上図の表示が出るのは、「指定どおり処理できなかった」「ファイルが破損している」など、「問題があったため、予期せぬ結果になっている」ということになります。
全てが深刻な問題というわけではありませんが、このような表示が出ないに越したことはありません。
解決に向けて一歩踏み出すあなたをサポートします。まずは原因を見ていきましょう。
代表的な原因は以下の4つです。
- 保存が不完全
- 書き込みが不完全
- シートやセルの不正な操作
- 非標準のフォーマットやスタイル
1つ1つ解説していきます。
保存が不完全
openpyxlでエクセルファイルを保存する際、ファイルが正しく閉じられていなかったり、保存中にエラーが発生したりすると、ファイルが破損する可能性があります。
再度同じプログラムを実行することで改善する場合がありますので、まずは再実行から始めましょう。
書き込みが不完全
openpyxlでは、特定のプロパティや機能が完全にはサポートされていない場合があります。
例えばエクセルのマクロや外部リンク、複雑な数式・関数などは正しく処理されないことがあり、問題となる可能性があります。
複雑な処理が含まれている場合は、その部分を真っ先に疑いましょう。
シートやセルの不正な操作
シートやセルの追加や削除、セルの結合などの操作が不正に行われた場合、エクセルがその内容を認識できないことがあります。
「==」とセルに書き込みするだけでも問題が発生するため、コードチェックは慎重に行ってください。
非標準のフォーマットやスタイル
openpyxlでフォントやセルの書式設定を変更する際、エクセルが対応していない非標準の形式で保存されることがあります。
openpyxlで[一部の内容に問題が見つかりました]と表示される場合の対処法
対処法はたった1つです。
それは、「心当たりのある処理を無効にしてプログラムを実行してみる」です。
まずは何も考えず、問題が出たプログラムを再度実行してみましょう。
たまたま処理がうまくいかなかっただけで、改善される場合があります。
それでも、下図の表示が出たら、慌てず騒がず「はい」を押しましょう。
次に下図のような表示が出ますので、内容を確認してください。
この場合は、「削除されたレコード~パーツ内の数式」とありますので、
エクセル内の数式が削除されたことがわかります。
心当たりがあれば、その箇所を修正してください。
しかしながらこの表示だけでは問題の特定に至らないことが多いです。
※下の方に表示されているログファイルは、見ても余計にわからなくなるため見ない方がいいです。
ひとまずコードを見返してみてください。
複雑な処理や自信の無いコードは、いったん削除するかコメントアウトするなどで無効化してみましょう。
修正したプログラムを実行して問題の表示が出なければ、原因はその無効化した部分にあります。
これだけでも解決に一歩近づいています。
あとは、さらにその問題の個所を細かく見ていき、部分部分を変更して有効化してみましょう。
もちろん無効化したままでも実害ない処理ならそのままでもOKです。
挫折しないようにがんばりましょう。
書き込み処理をしている場合は、まずは10行だけ書き込み、次に100行ずつなど少しずつ増やしていくと問題の個所を特定しやすいです。
どうしても問題の個所が特定できない場合は、コード全てを無効化して、上から少しずつ有効にしながらテストするしかありません。
案外元データに問題があるケースもありますので、「開いて保存」するだけでもやる価値はあります。
それでも特定に至らない場合は、ライブラリを変えてみるのも一つの方法です。
エクセルを処理するライブラリは「openpyxl」だけではありません。
「pandas」や「xlwings」などが代表的ですので、可能であれば試してみてください。
最後に
openpyxlで「一部の内容に問題が見つかりました」と表示される場合の原因と対処法を解説いたしました。
当ブログでは、Pythonに関する情報を配信しております。
この記事がわかりやすいと感じた方は、他の記事も読んでいってください。
挫折せずにPythonを独学で学習する方法は特におすすめです。
最後までお読みいただき、ありがとうございました。がんばってください!