Python to excel,openpyxl和文件格式无效

时间:2016-07-03 20:02:12

标签: python openpyxl

以下是打开.xlsm文件的简单代码段,使用python向其写入一些值并保存。

import openpyxl
from openpyxl import load_workbook

def toExcel():
    wb = load_workbook(filename="C:\\Users\\Mark\\Documents\\Test.xlsm")
    ws = wb.worksheets[0]
    ws.cell(row=1, column=1).value = 'foo'
    ws['A2'] = 'bar'
    wb.save("C:\\Users\\Mark\\Documents\\Test1.xlsm")

toExcel()

当文件打开并保存时,它提到文件格式无效/损坏且无法打开。如果.xlsm从wb.save中删除,它将在使用Open With选择excel后保存并打开。为什么文件格式无效?

2 个答案:

答案 0 :(得分:2)

从这里开始:https://openpyxl.readthedocs.io/en/default/tutorial.html#saving-to-a-file

  

请注意

     

以下内容将失败:

>>> wb = load_workbook('document.xlsx')
>>> # Need to save with the extension *.xlsx
>>> wb.save('new_document.xlsm')
>>> # MS Excel can't open the document
>>>
>>> # or
>>>
>>> # Need specify attribute keep_vba=True
>>> wb = load_workbook('document.xlsm')
>>> wb.save('new_document.xlsm')
>>> # MS Excel can't open the document
>>>
>>> # or
>>>
>>> wb = load_workbook('document.xltm', keep_vba=True)
>>> # If us need template document, then we need specify extension as *.xltm.
>>> # If us need document, then we need specify attribute as_template=False.
>>> wb.save('new_document.xlsm', as_template=True)
>>> # MS Excel can't open the document

答案 1 :(得分:0)

我认识的那个聚会晚了,但是我刚开始使用python并想使用openpyxl创建和保存.xlsm文件,并且遇到了相同的问题,在该错误中我指出了错误,指出文件类型无效在创建我的.xlsm文件之后。

玩了一段时间后,我发现为了创建.xlsm文件,您首先必须创建并保存.xlsx文件,然后才能使用它来创建{ {1}}文件。

以下是使用openpyxl从头开始创建.xlsm文件的代码:

.xlsm

现在您应该可以毫无问题地打开from openpyxl import Workbook from openpyxl import load_workbook # create a workbook wb = Workbook() # save the workbook wb.save("example.xlsx") # load the newly created workbook xlsmFile = load_workbook("example.xlsx", keep_vba=True) # save your xlsm file xlsmFile.save("newXlsmFile.xlsm")

解决这个问题的方法可能更简单/更清洁,但这是我发现从头开始创建newXlsmFile.xlsm文件的唯一方法,该文件将打开而不会出现任何问题。

希望这对其他人有帮助。享受吧!