python - 使用 win32com.client 库,无法从使用其他工作簿中的范围创建的 PivotCache 创建数据透视表
问题描述
我正在尝试使用从名为“Reports.xlsx”的其他工作簿中的 dataRange 创建的 PivotCache 在名为“Model.xlsx”的工作簿中创建一个数据透视表
当我在创建 dataRange 的同一工作簿(Reports.xlsx)中创建数据透视表时,数据透视表创建成功,但是当我尝试在其他工作簿中创建数据透视表时,它给出错误“发生异常”
我的代码太长了,这就是为什么我不分享它,因为它可能会使读者感到困惑。我希望我已经充分阐述了这个问题。
解决方案
使用 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
当我这样做时,我发现 Microsoft 对数据透视表的帮助非常宝贵。
推荐阅读
- angular - Angular 最佳实践:将数据作为输入传递或使用查询参数
- c - 在尝试计算 C 中的大写字母时获得随机增量
- gradle - 在 IDEA 中打开 gradle 项目时如何修复 `#USE_PROJECT_JDK`?
- php - 当您在另一个字段中输入值时如何更新表单字段
- ruby-on-rails - 我的控制器未定义方法“user_id”中的 Ruby-on-Rails NoMethodError 用于 nil:NilClass
- ios - 从我的应用发布时如何确保 Facebook 将 sdk 帖子共享到 Facebook 时间线
- c - 代码执行的结果是什么?C 运算符优先级
- stm32 - 为什么我们在STM32中将端口时钟用作外设I/O时需要初始化端口时钟?
- python - PiD数如何重置
- ruby-on-rails - ActiveRecord::Delegation 模块中的@klass 是什么?