尝试更新现有数据透视表中的数据源

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

这是我试图更改现有数据透视表中的数据源的代码,我有两个数据透视表,我想更新源数据

 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(r'C:\Users\70.P\De\E_Python_Script\Sc_ext.xlsx')
    ws = xlBook.Worksheets['Sheet2']
    ws.Unprotect()  # IF protected
    pivotCount = ws.PivotTables().Count
    print("pivot count is",pivotCount)

    for j in range(1, pivotCount + 1):
        ws.PivotTables(j).PivotCaches.Create(SourceType=xlDatabase, SourceData="C:\Users\70.P\Desktop\E_Python_Script[Sc_ext.xlsx]Sheet1!$A$1:$AC$4601", Version=xlPivotTableVersion14)

    # 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
excel python-3.x pivot-table
1个回答
0
投票

嗯,这是一个非常老的问题(我希望这可以帮助有同样问题的人)...

要使用 win32com.client 更改数据透视表的源数据:

设置数据透视表:

pivot_table = Sheet_name.PivotTables("数据透视表名称")

设置选项:

pivot_cache = WorkBook_name.PivotCaches().Create(SourceType = w32c.constants.xlDatabase, SourceData = data_Range, Version = 所需版本)

  • WorkBook_name:带有数据透视表的工作簿。
  • 数据范围:
    • 如果日期位于同一张表中,则在末尾添加:.地址
    • 如果是外部参考,则:
      .GetAddress(True, True, w32c.constants.xlA1, True)"
此行使用新的 SourceData 刷新数据透视表

pivot_table.ChangePivotCache(pivot_cache)

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