だから私は Python 3.2 と OpenPyXL の反復可能なワークブックを使用してきました。
この戦略を使用して、単純な .zip アーカイブから抽出したファイル (手動と python zipfile パッケージの両方) を読み取ろうとすると、問題が発生します。呼び出す.get_highest_column()
と「A」.get_highest_row()
が返され、1 が返され、次に示すように各セルの値を出力するように求められると、次のようになります。
wb = load_workbook(filename = file_name, use_iterators = True)
ws = wb.worksheets[0] # Only need to read the first sheet, nothing fancy
for row in ws.iter_rows():
for entry in row:
print(entry.internal_value)
ファイルの実際の大きさに関係なく、A1、A2、A3、A4、A5、A6、および A7 の値を出力します。ファイル自体にこれの理由はなく、Excel で問題なく開くことができます。なぜこのようにするのかについては非常に困惑していますが、解凍された XLSX は Excel 内から保存される前に異なる形式でフォーマットされていると想定しており、OpenPyXL はそれを正しく解釈できません。ファイルを調べて違いを調べることができるように、「.xlsx」の名前を「.zip」に変更しましたが、Excelから保存したものには「xls」内に「theme」というサブフォルダーもあるということ以外はあまりわかりませんでした" フォルダは、以前のバージョンにはありませんでした。フォントと書式データが含まれています。
重要な注意: それを開いて Excel 内から同じファイル名で再保存し、このコードを実行すると、完全に機能します - 正しい最大の行と列の値を返し、すべてのセルの値を正しく出力します。代わりに、ワークブックを開いた直後に OpenPyXL で保存しようとしましたが、これは同じ誤った結果をもたらします。
基本的に、 OpenPyXL で読み取れるように、 .zipファイルから.xlsxファイルを適切に抽出する方法を見つける必要があります。このように処理する必要があるファイルは多数あるため、Excel の外部にある必要があり、できればできるだけ効率的であることが望まれます。
乾杯!