如何用C#的Spire.Xls给数据透视表行字段(列标题)添加筛选及报错解决
解决Spire.Xls为数据透视表行字段添加筛选的问题
错误原因
pt.RowFields返回的集合元素类型为IPivotField接口,该接口未公开Name属性,直接访问field.Name会导致编译错误。
修正方案
方案1:强制转换为PivotField类型
将集合中的元素强制转换为PivotField类型,即可访问Name属性:
PivotField r1 = pt.PivotFields["Invoice Type"] as PivotField; r1.Axis = AxisTypes.Row; r1.RepeatItemLabels = true; r1.Subtotals = SubtotalTypes.None; pt.Options.RowHeaderCaption = "Invoice Type"; foreach (var field in pt.RowFields) { PivotField pivotField = field as PivotField; if (pivotField != null) { PivotReportFilter filter = new PivotReportFilter(pivotField.Name, true); pt.ReportFilters.Add(filter); } }
方案2:使用Caption属性
如果字段的显示标题(Caption)和内部名称一致,可直接使用Caption属性替代Name:
PivotField r1 = pt.PivotFields["Invoice Type"] as PivotField; r1.Axis = AxisTypes.Row; r1.RepeatItemLabels = true; r1.Subtotals = SubtotalTypes.None; pt.Options.RowHeaderCaption = "Invoice Type"; foreach (IPivotField field in pt.RowFields) { PivotReportFilter filter = new PivotReportFilter(field.Caption, true); pt.ReportFilters.Add(filter); }
功能说明
上述代码会将透视表的所有行字段添加到报表筛选区域,使这些字段显示为可筛选的标题,实现对行字段内容的筛选功能。
内容的提问来源于stack exchange,提问作者Harini Muralidharan
相关产品推荐
相关产品推荐

