python - 通过 Python 在 Excel 中创建切片器对象
问题描述
我正在尝试使用 python 中的 XLwings 包在 Excel 工作表中重新创建一些画面功能。
具体来说,我编写了一个脚本来处理来自我们的 SQl 服务器的数据并执行一些聚合/统计函数,其输出是一个 pandas 数据帧。我可以利用 xl 翅膀在 excel 中发布简单的图表和可视化,但我想合并一个 excel 切片器对象,以便可以在特定工作表中选择信息的子集
先感谢您!
解决方案
您需要切片器来连接图表对象/数据透视表吗?这是您问题的完整解决方案。
我使用 win32com.client 库创建数据透视表、切片器并建立切片器连接。
创建数据透视表的代码:
def new_pivot_table(Field_Name,j,Cache,charttype,top,left):
PivotTable = PivotCache.CreatePivotTable(TableDestination='Sheet1!R150C'+j,
TableName ='ReportPivotTable'+Cache, DefaultVersion=win32c.xlPivotTableVersion14)
PivotTable.PivotFields(Field_Name).Orientation = win32c.xlRowField
PivotTable.PivotFields(Field_Name).Position = 1
DataField = PivotTable.AddDataField(PivotTable.PivotFields('count'))
S = PivotTable._PivotSelect(2881,4)
chart = Sheet2.Shapes.AddChart2(314,charttype,top,left, 50, 60)
ChartObj = chart.Chart
return PivotTable,ChartObj
创建切片器的代码
def create_Slicer(Pivottable,Field_Name,Cache):
S = Pivottable._PivotSelect(2881,4)
SLcache = wb.SlicerCaches.Add2(Pivottable,Field_Name,"ProdCatSlicerCache"+Cache)
SL=SLcache.Slicers.Add(SlicerDestination=wb.ActiveSheet,Name="ProdCatSlicer"+Cache,Top=65+int(Cache)*30,Left=800,Width=210,Height=70)
return SLcache
将切片器连接到每个数据透视表/图表:
def slicer_connect(SLcache):
for j in range(1,9,1):
k=str(j)
SLcache.PivotTables.AddPivotTable(wb.ActiveSheet.PivotTables("ReportPivotTable"+k))
推荐阅读
- flutter - 颤动中可调整大小的拼贴视图
- mysql - MySql:如何使用多个枢轴连接这两个表
- r - 如何从R中的数据集中删除浮动值
- javascript - 使用数组长度创建重复对象
- sql - Sql - 使用连接从大表(100M+)中获取记录时查询慢,提示?
- html - 动画 - 如何选择动画完成时发生的事情
- java - 在子项目的 build.gradle 文件中访问项目的 gradle.properties 文件中声明的变量
- python - 如何清除在 tkinter 的选项菜单小部件中选择的值?
- .net-core - .NET 通用主机 - 是否可以停止和重新启动主机?
- generics - Dart:需要实现运算符 [] 的通用约束