无法保存 Excel 文件 - Win32com.client

问题描述 投票:0回答:1

我正在使用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)
- 相同

python excel win32com
1个回答
0
投票

对文件进行更改后。 使用

time.sleep(5) wb.Save() excel.Quit()
我花了一个小时才明白,
wb.Close()
正在关闭文件,然后才成功保存 - 所以不要使用
wb.Close()

© www.soinside.com 2019 - 2024. All rights reserved.