使用openpyxl刷新Excle中的数据透视表

时间:2017-12-29 01:00:03

标签: python excel openpyxl

我有一个文件,其中有几个选项卡,这些选项卡具有基于一个数据选项卡的数据透视表。我可以毫无问题地将数据写入数据选项卡,但我无法弄清楚如何使用数据透视表来刷新所有选项卡。

如果可以通过openpyxl实现这一目标,那将是理想的。

4 个答案:

答案 0 :(得分:0)

我有类似的问题,但我认为这是Excel非常特殊的事情,那么,我有两个解决方案:

Firts,在打开文件excel时标记更新的pivottables,例如:右键单击数据透视表,然后,"数据透视表的选项",然后,部分"数据" ,然后,标记复选框"在打开文件时更新"

其次,为该更新创建一个宏,使用数据透视表更新所有工作表,例如:

Dim Hoja As Worksheet
Dim TD As PivotTable
'
'read each sheet of file
For Each Hoja In ActiveWorkbook.Sheets
    'read each pivot table of each sheet
    For Each TD In Hoja.PivotTables
        'update pivot tble
        TD.RefreshTable
    Next TD
Next Hoja

答案 1 :(得分:0)

目前我所做的是在我的模板中创建一个动态数据范围,从原始数据表中获取数据,然后将该命名范围设置为表数据源。然后在数据透视表选项中有一个“打开时刷新”参数,我启用它。当excel文件打开时,它会刷新,你可以看到它刷新。目前正在寻找一种方法在openpyxl中进行,但这是我在

的地方

答案 2 :(得分:0)

如果数据源范围始终相同,则可以将每个数据透视表设置为“打开时刷新”。为此,只需转到数据透视表选项卡,单击数据透视表,在“分析”->“选项”->“选项”->“数据”->“打开文件时刷新数据”下。

如果数据源范围是动态的,则可以设置一个命名范围,然后在数据透视表选项卡中,将数据源更改为该命名范围。并再次设置“打开时刷新”。

因此,无需使用任何python软件包即可实现上述目的,或者可以使用openpyxl进行刷新。但是,请确保您使用的是2.5版或更高版本,否则数据透视表格式将丢失。

答案 3 :(得分:0)

我遇到了同样的问题,并且可以通过执行以下操作来更新我的数据透视表:

from openpyxl import load_workbook
wb = load_workbook("sample.xlsx")
pivot_sheet = wb["pivot tab name"]
pivot = pivot_sheet._pivots[0]
pivot.cache.refreshOnLoad = True