使用 openpyxl 打开 .xlsm 文件时出现问题

Posted

技术标签:

【中文标题】使用 openpyxl 打开 .xlsm 文件时出现问题【英文标题】:Issue while opening .xlsm file using openpyxl 【发布时间】:2021-12-08 05:32:29 【问题描述】:

我目前正在使用 openpyxl 将新工作表添加到 .xlsm 文件中,使用 (read_only=False)

例如。

    wb = openpyxl.load_workbook("Input_file.xlsm", read_only=False, keep_vba=True)
    sheet = wb.create_sheet('Source_Data')
    final_row = dataframe_to_rows(final_df)
    #  code to add final row to sheet Source_Data
    wb.save("Input_file.xlsm")
    wb.close()


 Below is the error message

~\AppData\Local\Programs\Python\Python39\lib\zipfile.py in getinfo(self, name)
   1427         info = self.NameToInfo.get(name)
   1428         if info is None:
-> 1429             raise KeyError(
   1430                 'There is no item named %r in the archive' % name)
   1431 

KeyError: "There is no item named 'xl/drawings/NULL' in the archive"

【问题讨论】:

我认为您应该写信给它……optimised mode 上的文档应该有更多详细信息,因为您使用的是 read_only = True 源文件损坏。 请澄清您的具体问题或提供更多详细信息以准确突出您的需求。正如目前所写的那样,很难准确地说出你在问什么。 【参考方案1】:

我遇到了完全相同的问题。我设法轻松解决了它(我不明白为什么,但它有效)。 显然有一些图像粘贴在一些隐藏的工作表中。

您需要找到并删除它们。 (也许使它们可见也可以解决问题-我没有检查) 有两种方法。选择工作簿中的每个工作表。那么:

选项1: 按 F5 -> 特殊 -> 对象 这将突出显示工作表上的所有隐藏图像

选项2: 转到“主页”选项卡->按“查找和选择”->按“选择窗格” 您可以查看所有隐藏的图像 - 并删除它们

【讨论】:

以上是关于使用 openpyxl 打开 .xlsm 文件时出现问题的主要内容,如果未能解决你的问题,请参考以下文章

openpyxl 和 excel 宏

为啥打开 .xlsm 而不是 .xls 时出现 python xlrd 错误

openpyxl简单入门——日常工作够用了

Openpyxl:使用 load_workbook 时出现“ValueError:最大值为 14”

Python:openpyxl这一篇就够了

openpyxl