Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 未能使用openpyxl保存两次带有注释的xlxs文件_Python_Openpyxl - Fatal编程技术网

Python 未能使用openpyxl保存两次带有注释的xlxs文件

Python 未能使用openpyxl保存两次带有注释的xlxs文件,python,openpyxl,Python,Openpyxl,这是我的密码。当我试图保存带有注释的XLX时,它失败了。我怎么知道什么时候该再次保存 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.properti

这是我的密码。当我试图保存带有注释的XLX时,它失败了。我怎么知道什么时候该再次保存

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\u 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'
回溯(最近一次呼叫最后一次):
文件“D:/h32工作区/trunk/event_editor/eric6/model/test_File.py”,第31行,在
model.save(文件名)
文件“C:\Python27\lib\site packages\openpyxl\workbook\workbook.py”,第342行,保存
保存工作簿(自身,文件名)
保存工作簿中第269行的文件“C:\Python27\lib\site packages\openpyxl\writer\excel.py”
writer.save(文件名)
文件“C:\Python27\lib\site packages\openpyxl\writer\excel.py”,第251行,保存
self.write_data()
文件“C:\Python27\lib\site packages\openpyxl\writer\excel.py”,第81行,在write\u数据中
自己写工作表()
文件“C:\Python27\lib\site packages\openpyxl\writer\excel.py”,第214行,在工作表中
自我评论(ws)
文件“C:\Python27\lib\site packages\openpyxl\writer\excel.py”,第184行,在写注释中
vml=fromstring(self.workbook.vba_archive.read(ws.legacy_绘图))
AttributeError:“非类型”对象没有属性“读取”

我试图使用
keep_vba=True
加载工作簿,但未能正确保存文件。无法打开保存的文件。

我使用您的代码保存了一个示例.xlsx文件。保存时没有任何问题。
在.xlsx文件中是否有任何
? 如果是,您可能希望使用以下命令打开启用宏的xlsx文件:

model = load_workbook(filename, keep_vba=True)
有关使用宏的
openpyxl
的详细信息,请参阅

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

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

希望这有帮助。

我用你的代码保存了一个示例.xlsx文件。保存时没有任何问题。
在.xlsx文件中是否有任何
? 如果是,您可能希望使用以下命令打开启用宏的xlsx文件:

model = load_workbook(filename, keep_vba=True)
有关使用宏的
openpyxl
的详细信息,请参阅

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

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

希望这能有所帮助。

尝试使用XlsxWriter:从回溯中可以清楚地看出,发布的代码是不正确的:您使用的是XLSM文件,而这些文件并不完全包含在标准中,因为所有与宏相关的内容都是一个黑盒。@Charlectlark我发现带注释的excel无法保存twiceYes,但问题与使用宏有关。请尝试使用XlsxWriter:从回溯中可以清楚地看出,发布的代码是不正确的:您使用的是XLSM文件,这些文件不完全包含在标准中,因为所有与宏相关的内容都是一个黑盒。@Charlectlark我发现带有注释的excel将无法保存twiceYes,但问题与使用宏有关。当使用
时,请保持\u vab=True
。文件保存两次后,文件被破坏。为什么需要保存两次文件?你可以在最后保存一次。除非您在第一次保存后修改xlsx文件。在这种情况下,您需要再次打开它,然后保存。xlsx对象在第一次保存之前具有原始信息。我选择再次关闭并打开它-在这种情况下,在再次关闭并打开后,是否修改并再次关闭。希望这可以解决任何损坏。当使用
时,请保持\u vab=True
。文件保存两次后,文件被破坏。为什么需要保存两次文件?你可以在最后保存一次。除非您在第一次保存后修改xlsx文件。在这种情况下,您需要再次打开它,然后保存。xlsx对象在第一次保存之前具有原始信息。我选择再次关闭并打开它-在这种情况下,在再次关闭并打开后,是否修改并再次关闭。希望这可以解决任何腐败问题。