Python 使用OpenPyXL读取提取的XLSX文件

Python 使用OpenPyXL读取提取的XLSX文件,python,python-3.x,xlsx,zipfile,openpyxl,Python,Python 3.x,Xlsx,Zipfile,Openpyxl,所以我一直在使用Python3.2和OpenPyXL的iterable工作簿 当我尝试使用此策略读取从简单的.zip归档文件(手动或通过python zipfile包)中提取的一个或多个文件时,我的问题就会出现。当我调用.get\u highest\u column()时,我得到“A”和.get\u highest\u row()时,我得到1,当要求打印每个单元格的值时,如下所示: wb = load_workbook(filename = file_name, use_iterators =

所以我一直在使用Python3.2和OpenPyXL的iterable工作簿

当我尝试使用此策略读取从简单的.zip归档文件(手动或通过python zipfile包)中提取的一个或多个文件时,我的问题就会出现。当我调用
.get\u highest\u column()
时,我得到“A”和
.get\u highest\u 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外部的,并且希望尽可能高效


干杯

听起来这与从zipfile中提取无关,因为如果手动提取文件,也会出现问题。 我会尝试将用Excel打开和保存的文件存储在zipfile中,看看会发生什么。如果这样做有效,那么很明显,原始
.xlsx
文件的生成方式就是问题所在。 我强烈怀疑是这样的


如果这是问题所在,请查看是否可以提取
.xlsx
文件(它们本身就是ZipFile),并将用Excel保存的文件与原始问题文件进行比较。xml不容易比较,因为Excel可以随意重新排列大多数内容,但您可能可以做一些不同的事情。

原始压缩的
.xlsx
文件来自哪里?有机会举个例子吗?