创建或获取数据透视表以后,可以对数据透视表中的元素进行编辑,如添加或修改字段、设置表中数据的数字格式、设置表中单元格区域的格式等。[大谦Excel,dqexcel点com]
添加字段
对于已有数据透视表,可以添加字段。添加页字段、列字段和行字段使用PivotTable对象的AddFields方法,添加值字段使用PivotTable对象的AddDataField方法。
图8-4 创建简单的数据透视表
编写Python脚本。
#前面代码省略,请参见Python文件
#......
先创建一个简单的数据透视表,将“产品”设置为列字段,将“产地”设置为行字段。
#创建透视表
pvt=sht_pvt.api.PivotTableWizard(\
SourceType=xw.constants.PivotTableSourceType.xlDatabase,\
SourceData=rng_data)
pvt.Name='透视表'
#设置字段
pvt.PivotFields('产品').Orientation=\
xw.constants.PivotFieldOrientation.xlColumnField #列字段
pvt.PivotFields('产品').Position=1
pvt.PivotFields('产地').Orientation=\
xw.constants.PivotFieldOrientation.xlRowField #行字段
pvt.PivotFields('产地').Position=1
用PivotTable对象的AddFields方法将“类别”添加为页字段,用AddDataField方法将“金额”添加为值字段。
#添加页字段
pvt.AddFields(PageFields='类别',AddToTable=True) #页字段
#添加值字段
pvt.AddDataField(pvt.PivotFields('金额'),'求和项:金额',\
xw.constants.ConsolidationFunction.xlSum) #值字段
运行脚本,生成图8-2所示的数据透视表。
修改字段
可以修改已有数据透视表中字段对象的属性。例如创建数据透视表时将“金额”指定为值字段,则默认时会生成名为“求和项:金额”的活动字段,如图8-2所示工作表中A3单元格所示。现用PivotField对象的Name属性修改该字段名称为“ 金额 ”。注意,“金额”是已有字段名称,所以新名称在”金额”前后添加了一个空格。
图8-5 修改数据透视表中的字段名称
编写Python脚本。脚本首先创建数据透视表,将“金额”作为值字段,自动生成活动字段“求和项:金额”,用PivotField对象的Name属性将该名称修改为“ 金额 ”。
#前面代码省略,请参见Python文件
#......
#设置字段
…
pvt.PivotFields(‘金额’).Orientation=\
xw.constants.PivotFieldOrientation.xlDataField #值字段
#修改字段名称
pvt.PivotFields(‘求和项:金额’).Name=’ 金额 ‘
运行脚本,完成字段名称的修改。
设置字段的数字格式
使用PivotField对象的NumberFormat属性可以修改指定字段的数字格式。例如,下面创建数据透视表,将其中活动字段“求和项:金额”的数字格式设置为保留两位小数。
图8-6 设置字段的数字格式
编写Python脚本。
#前面代码省略,请参见Python文件
#......
#设置数字格式
pvt.PivotFields('求和项:金额').NumberFormat='0.00'
运行过程,生成数据透视表如图8-6所示。
数据透视表的单元格区域属性设置
使用PivotTable对象的DataBodyRange属性可以设置数据区单元格区域的属性,包括单元格区域背景色、字体属性等;使用PivotField对象的DataRange属性可以设置字段对应单元格区域的属性。
下面创建数据透视表,将数据区设置为灰色,字体设置为"Times New Roman",将“产品”字段单元格区域设置为绿色,将“产地”字段单元格区域设置为黄色。
图8-7 设置数据透视表单元格区域的属性
编写Python脚本。
#前面代码省略,请参见Python文件
#......
#设置数据区单元格区域的属性
pvt.DataBodyRange.Interior.Color = xw.utils.rgb_to_int((200,200,200))
pvt.DataBodyRange.Font.Name = "Times New Roman"
#设置“产品”字段单元格区域背景色为绿色
pvt.PivotFields("产品").DataRange.Interior.Color=\
xw.utils.rgb_to_int((0,255,0))
#设置“产地”字段单元格区域背景色为黄色
pvt.PivotFields("产地").DataRange.Interior.Color=\
xw.utils.rgb_to_int((255,255,0))
运行脚本,生成数据透视表如图8-7所示。