所以我一直在使用 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 保存的那个在“xl " 以前版本没有的文件夹,包含字体和格式数据。
重要提示:当我在 Excel 中打开它并使用相同的文件名重新保存它,然后运行这段代码时,它可以完美运行- 返回正确的最大行和列值,并正确打印每个单元格值。我尝试在打开工作簿后立即通过 OpenPyXL 保存工作簿,但这会产生相同的错误结果。
基本上,我需要找到一种从.zip文件中正确提取.xlsx文件的方法,以便可以使用 OpenPyXL 读取它。有很多很多文件需要像这样处理,所以它必须在 Excel 外部,并且希望尽可能高效。
干杯!