使用win32com.client库,无法从使用其他工作簿中的范围创建的PivotCache创建PivotTable

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

[我正在尝试使用从其他名为“ Reports.xlsx”的工作簿中的dataRange创建的PivotCache在名为“ Model.xlsx”的工作簿中创建数据透视表

[当我在从其创建dataRange的同一工作簿(Reports.xlsx)中创建数据透视表时,数据透视表已成功创建,但是当我尝试在其他工作簿中创建数据透视表时,出现错误“发生异常”

我的代码太长,这就是为什么我不共享它,因为它可能会使读者感到困惑。我希望我已经充分阐述了这个问题。

python excel vba automation win32com
1个回答
0
投票

[使用COM时,需要在Excel中通过Excel创建枢纽分析表。我使用过xlwings(其核心是COM包装器)。这个想法是创建一个数据透视表缓存,并使用它来生成数据透视表。

import xlwings as xw
from xlwings import constants

wb = xw.Book.caller()

pivot_table = xw.sheets.add(name='Pivot Table', after='Sheet1')

PivotTableName = 'ReportPivotTable'

PivotCache = wb.api.PivotCaches().Create(SourceType=constants.PivotTableSourceType.xlDatabase, SourceData=PivotSourceRange.api, Version=constants.PivotTableVersionList.xlPivotTableVersion14)

PivotTable = PivotCache.CreatePivotTable(TableDestination="'Pivot Table'!R1C1", TableName=PivotTableName, DefaultVersion=constants.PivotTableVersionList.xlPivotTableVersion14)
PivotTable.PivotFields('Last Name').Orientation = constants.PivotFieldOrientation.xlRowField
PivotTable.PivotFields('Last Name').Position = 1
PivotTable.PivotFields('Project Code').Orientation = constants.PivotFieldOrientation.xlRowField
PivotTable.PivotFields('Project Code').Position = 2
PivotTable.PivotFields("total").Orientation = constants.PivotFieldOrientation.xlDataField
© www.soinside.com 2019 - 2024. All rights reserved.