以下是打开.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后保存并打开。为什么文件格式无效?
答案 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
文件的唯一方法,该文件将打开而不会出现任何问题。
希望这对其他人有帮助。享受吧!