我使用python自动执行一些excel任务。
我有一个数据透视表,它从excel表中获取值。数据每周都附加到特定的Excel工作表,但数据透视表不会自动刷新,因此,每次,我必须转到Excel工作表并在更改数据源中提供最后一行编号选项。有没有办法使用python自动更新数据透视表,更具体地说是使用 pywin32 。
这是我尝试过的代码:
def refresh_pivot_tables():
excel_app = win32com.client.dynamic.Dispatch("Excel.Application")
excel_app.Interactive = False
excel_app.Visible = False
excel_app.DisplayAlerts = False
xlBook = excel_app.Workbooks.Open(main_file)
ws = xlBook.Worksheets['Summary']
ws.Unprotect() # IF protected
pivotCount = ws.PivotTables().Count
print("pivot count is",pivotCount)
for j in range(1, pivotCount + 1):
ws.PivotTables(j).PivotCache().Refresh()
# Put protection back on
#ws.Protect(DrawingObjects=True, Contents=True, Scenarios=True, AllowUsingPivotTables=True)
xlBook.Close(SaveChanges=1)
del xlBook
excel_app.Quit()
del excel_app