通过 Python 在 Excel 中创建切片器对象

Posted

技术标签:

【中文标题】通过 Python 在 Excel 中创建切片器对象【英文标题】:Create Slicer Object in Excel Via Python 【发布时间】:2019-05-28 05:17:30 【问题描述】:

我正在尝试使用 python 中的 XLwings 包在 Excel 工作表中重新创建一些画面功能。

具体来说,我编写了一个脚本,用于处理来自我们的 SQl 服务器的数据并执行一些聚合/统计函数,其输出是一个 pandas 数据帧。我可以利用 xl 翅膀在 excel 中发布简单的图表和可视化效果,但我想合并一个 excel 切片器对象,以便可以在特定工作表中选择信息的子集

提前谢谢你!

【问题讨论】:

你是问如何在 pandas 中切片数据? 你好!我不是 - 切片器对象是 excel 中使用的一种工具,它选择一系列值中的数据子集(用户可以从切片器菜单中选择一个条目以突出显示某些特定数据)。 【参考方案1】:

您需要切片器来连接图表对象/数据透视表吗? 这是您问题的完整解决方案。

我已使用 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))

【讨论】:

以上是关于通过 Python 在 Excel 中创建切片器对象的主要内容,如果未能解决你的问题,请参考以下文章

在 Go 中创建 2D 切片的简洁方法是啥?

在 R 中创建切片树

如何在python中创建二维列表

如何在 Qt 中创建 3D 对象模型的 2D 切片?

Java 在Excel中创建多级分组折叠或展开分组

Java 在Excel中创建多级分组折叠或展开分组