更改使用代码生成的数据透视表的设计(win32com)

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

所以我正在生成这个数据透视表: PivotGenerated

使用此代码:

pivot_table_cell = ws2.Cells(15,15)
    pivot_table_range = ws2.Range(pivot_table_cell, pivot_table_cell)
    pivot_table_name = 'AddCosts'

    pivot_cache = wb.PivotCaches().Create(SourceType=win32c.xlDatabase, SourceData=ws1.UsedRange)

    pivot_table = pivot_cache.CreatePivotTable(TableDestination = pivot_table_range, TableName = pivot_table_name)
    
    pivot_table.PivotFields('Supplier').Orientation = win32c.xlRowField
    pivot_table.PivotFields('BPO#').Orientation = win32c.xlRowField
    pivot_table.PivotFields('SPL').Orientation = win32c.xlRowField
    pivot_table.PivotFields('Country').Orientation = win32c.xlRowField
    pivot_table.PivotFields('Currency').Orientation = win32c.xlRowField
    ws2.PivotTables(pivot_table_name).AddDataField(ws2.PivotTables(pivot_table_name).PivotFields('Case ID'), Caption = 'Count of Case ID', Function=win32c.xlCount).NumberFormat = '0'
    ws2.PivotTables(pivot_table_name).AddDataField(ws2.PivotTables(pivot_table_name).PivotFields('Labor Rate'), Caption = 'Sum of Labor Rate', Function=win32c.xlSum).NumberFormat = '{0} #.##0,00'.format(cur)
    ws2.PivotTables(pivot_table_name).AddDataField(ws2.PivotTables(pivot_table_name).PivotFields('Logistic Rate'), Caption = 'Sum of Logistics Rate', Function=win32c.xlSum).NumberFormat = '{0} #.##0,00'.format(cur)
    ws2.PivotTables(pivot_table_name).AddDataField(ws2.PivotTables(pivot_table_name).PivotFields('Material Fee'), Caption = 'Sum of Material Fee', Function=win32c.xlSum).NumberFormat = '{0} #.##0,00'.format(cur)
    ws2.PivotTables(pivot_table_name).AddDataField(ws2.PivotTables(pivot_table_name).PivotFields('Additional Costs'), Caption = 'AdditionalCosts', Function=win32c.xlSum).NumberFormat = '{0} #.##0,00'.format(cur)
    ws2.PivotTables(pivot_table_name).AddDataField(ws2.PivotTables(pivot_table_name).PivotFields('Total Rate'), Caption = 'Total', Function=win32c.xlSum).NumberFormat = '{0} #.##0,00'.format(cur)

效果很好。

但我想知道如何在代码上应用下一个 Excel 数据透视表设计更改:

1- 小计:不显示小计。

2- 报告布局:以表格形式显示。

3- 报告布局:重复所有项目标签。

让它看起来像这样DesiredPivot

提前谢谢您!

python excel win32com
1个回答
0
投票

可能不是最干净的,但我只需要添加这个:

pivot_table.PivotFields('Supplier').Subtotals = tuple(False for _ in range(12))
pivot_table.PivotFields('BPO#').Subtotals = tuple(False for _ in range(12))
pivot_table.PivotFields('SPL').Subtotals = tuple(False for _ in range(12))
pivot_table.PivotFields('Country').Subtotals = tuple(False for _ in range(12))
pivot_table.PivotFields('Currency').Subtotals = tuple(False for _ in range(12))

pivot_table.RowAxisLayout(win32c.xlTabularRow)
pivot_table.RepeatAllLabels(2)
© www.soinside.com 2019 - 2024. All rights reserved.