使用openpyxl使用注释两次保存xlxs文件的Faild

时间:2017-03-09 03:24:30

标签: python openpyxl

这是我的代码。当我尝试用注释保存xlxs时,它失败了。我怎么知道何时再次保存。

from openpyxl import load_workbook
import datetime


filename = u"large_table.xlsx"

model = load_workbook(filename)
model.properties.lastPrinted = datetime.datetime.now()
model.save(filename)
model.properties.lastPrinted = datetime.datetime.now()
model.save(filename)

回溯:似乎self.workbook.vba_archive意外设置为无。

Traceback (most recent call last):
  File "D:/h32workspace/trunk/event_editor/eric6/model/test_file.py", line 31, in <module>
    model.save(filename)
  File "C:\Python27\lib\site-packages\openpyxl\workbook\workbook.py", line 342, in save
    save_workbook(self, filename)
  File "C:\Python27\lib\site-packages\openpyxl\writer\excel.py", line 269, in save_workbook
    writer.save(filename)
  File "C:\Python27\lib\site-packages\openpyxl\writer\excel.py", line 251, in save
    self.write_data()
  File "C:\Python27\lib\site-packages\openpyxl\writer\excel.py", line 81, in write_data
    self._write_worksheets()
  File "C:\Python27\lib\site-packages\openpyxl\writer\excel.py", line 214, in _write_worksheets
    self._write_comment(ws)
  File "C:\Python27\lib\site-packages\openpyxl\writer\excel.py", line 184, in _write_comment
    vml = fromstring(self.workbook.vba_archive.read(ws.legacy_drawing))
AttributeError: 'NoneType' object has no attribute 'read'

我尝试使用keep_vba=True加载工作簿,但是如果无法正确保存文件。无法打开保存的文件。

1 个答案:

答案 0 :(得分:2)

我使用您的代码保存示例 .xlsx 文件。它保存没有任何问题。
你的 .xlsx 文件中是否有macro个? 如果是,您可能希望使用

打开启用宏的xlsx文件
model = load_workbook(filename, keep_vba=True)

有关openpyxl使用宏的详细信息,请参阅here

此外,尝试保存为不同的文件名,而不是尝试覆盖原始文件以确保其正常工作。

fileout = "test2.xlsx"
model.save(fileout)

希望这有帮助。