使用OpenPyXL读取提取的XLSX文件

2024-05-11 03:31:05 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我一直在使用python3.2和OpenPyXL的iterable工作簿as demonstrated here in the "Optimized Reader" example。在

当我试图使用此策略读取从简单的.zip存档文件中提取的一个或多个文件时(手动或通过pythonzipfile包)就会出现问题。当我调用.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外部的,希望尽可能高效。在

干杯!在


Tags: 文件theinforgetws格式zip
1条回答
网友
1楼 · 发布于 2024-05-11 03:31:05

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

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

相关问题 更多 >