我正在使用Python打开一个Excel文件(xlsxwriter用于创建Excel文件),然后添加数据透视表、图表和切片器,然后我需要保存并关闭它。除了保存部分之外,我可以完成所有事情。我希望 Excel 以相同的名称和相同的格式保存文件,甚至不要求我确认或类似的事情...
import win32com.client as win32
from pathlib import Path
win32c = win32.constants
f_path = Path.cwd()
f_name = "filename.xlsx"
filename = f_path / f_name
# Create Excel Object
excel = win32.gencache.EnsureDispatch('Excel.Application')
# Excel Can be Visible or Not + Display Alerts or Not
excel.Visible = True
excel.DisplayAlerts = False
# Initiate the workbook
wb = excel.Workbooks.Open(filename)
#HERE IS THE CODE TO ADD PIVOT TABLE, CHART AND SLICERS - WORKS AS EXPECTED WITHOUT ERRORS
# Save Workbook
wb.Close(SaveChanges = 1)
# Close Excel
excel.Application.Quit()
如果我使用
wb.Close(SaveChanges = 1)
,它不只是保存文件,它会打开另存为窗口并建议我使用不同的奇怪名称保存相同的格式,它甚至不允许我覆盖(使用相同的名称)现有文件。我必须选择不同的名称,然后删除以前的文件,然后重命名新文件以匹配原始文件名,然后我仍然需要手动关闭 Excel。
如果我使用
wb.Save()
,它会做完全相同的事情。
如果我使用
wb.SaveAs(str(filename), win32c.xlWorkbookDefault)
它又会做同样的事情
wb.SaveAs(Filename = str(filename))
- 相同
wb.SaveAs(str(filename), FileFormat=51, ConflictResolution=2)
- 相同
对文件进行更改后。 使用
time.sleep(5) wb.Save() excel.Quit()
我花了一个小时才明白,wb.Close()
正在关闭文件,然后才成功保存 - 所以不要使用wb.Close()
。