所以我一直在使用Python 3.2和OpenPyXL的迭代工作簿as demonstrated here in the "Optimized Reader" example。當我嘗試用這個策略來讀,我已經從一個簡單的.zip壓縮包(通過手動和Python的zip文件包)提取一個或多個文件用OpenPyXL讀取提取的XLSX文件
我的問題出現。當我打電話.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保存的文件在「xl」中還有一個名爲「theme」的子文件夾「以前的版本不包含字體和格式數據的文件夾。
重要提示:當我打開它,它與在Excel中相同的文件名和然後運行重新保存這段代碼,它的工作原理完美 - 正確返回最大的行和列值,並正確打印每個細胞的價值。我試過在打開它之後立即通過OpenPyXL保存工作簿,但是這會產生相同的錯誤結果。
基本上,我需要找到一個方法來正確地從一個.ZIP文件中提取的.xlsx文件,以便它可以與OpenPyXL讀取。有許多文件需要像這樣處理,所以它必須在Excel外部,並希望儘可能高效。
乾杯!
原始壓縮的'.xlsx'文件來自哪裏?有沒有可能得到一個例子? – Anthon