【发布时间】:2020-11-05 22:52:46
【问题描述】:
目前,我将我的数据框写入一个存在的 xlsx 文件,并且一切正常。 不过,我想写一个 xlsm 文件,因为它更方便(在我可以打开我的 xlsx 文件并运行宏之后)。
我该怎么做?
这是我写入 xlsx 文件的代码。
def append_df_to_excel(filename, df, sheet_name, startrow=None,
truncate_sheet=False,
**to_excel_kwargs):
from openpyxl import load_workbook
writer = pd.ExcelWriter(filename, engine='openpyxl')
try:
# try to open an existing workbook
writer.book = load_workbook(filename)
# get the last row in the existing Excel sheet
# if it was not specified explicitly
if startrow is None and sheet_name in writer.book.sheetnames:
startrow = writer.book[sheet_name].max_row
# truncate sheet
if truncate_sheet and sheet_name in writer.book.sheetnames:
# index of [sheet_name] sheet
idx = writer.book.sheetnames.index(sheet_name)
# remove [sheet_name]
writer.book.remove(writer.book.worksheets[idx])
# create an empty sheet [sheet_name] using old index
writer.book.create_sheet(sheet_name, idx)
# copy existing sheets
writer.sheets = {ws.title:ws for ws in writer.book.worksheets}
except FileNotFoundError:
# file does not exist yet, we will create it
pass
if startrow is None:
startrow = 0
# write out the new sheet
df.to_excel(writer, sheet_name, startrow=startrow, **to_excel_kwargs)
# save the workbook
writer.save()
当我做的时候
def append_df_to_excel("name.xlsx", df)
它有效,但是当我改变并做时
def append_df_to_excel("name.xlsx", df)
它不起作用。
【问题讨论】:
-
最后是xlsm。我在编辑中错误地将其更改为 xlsx,但它只是 xlsm。我很抱歉。
-
我认为 pandas 不支持 xlsm,因为它使用 xlrd 来读取 excel。这可能会帮助stackoverflow.com/questions/55109911/…。