我有一个允许用户过滤行的行字段:
pvt.PivotFields("Description").Orientation = XlPivotFieldOrientation.xlRowField;
...以及允许用户过滤列的列字段:
var monthField = pvt.PivotFields("MonthYr");
monthField.Orientation = XlPivotFieldOrientation.xlColumnField;
...但是当生成数据透视表时,它会显示"行标签"在哪里我想说'"描述"和#34;列标签"我希望它在哪里说"月":
如何将此默认/普通香草措辞改为我的自定义标签文字?
更多上下文,显示更多代码:
PivotTable pvt = pc.CreatePivotTable(_xlPivotTableSheet.Range["A6"], "PivotTable");
pvt.MergeLabels = true; // The only thing I noticed this doing was centering the heading labels
pvt.PivotFields("Description").Orientation = XlPivotFieldOrientation.xlRowField;
var monthField = pvt.PivotFields("MonthYr");
monthField.Orientation = XlPivotFieldOrientation.xlColumnField;
monthField.DataRange.Interior.Color = ColorTranslator.ToOle(Color.LightBlue);
我和#34; YYYYMM"有同样的问题。列标题标签,例如" 201509"和" 201510&#34 ;;我希望这些是" 2015年9月"和" 2015年10月" (等等。)。确实,这是源数据中包含的字面值(" 201509"" 201510"等等),但我想知道是否有&#39这是一种在没有太多麻烦的情况下按摩这些值的方法。
必须有一种方法可以为这些标签指定一个值,或者至少不显示它们,但是控制这些标签的对象是哪个属性?
答案 0 :(得分:2)
我可能会离开我的摇杆,但实现此目的的一种方法是简单地覆盖这些单元格中的值。即使修改数据透视表,它们也应该坚持下去。
_xlPivotTableSheet.Range["A7"].Value2 = "Description";
_xlPivotTableSheet.Range["B6"].Value2 = "Months";
我认为更合适的方法是更改“Compact Layout”标题属性:
pvt.CompactLayoutColumnHeader = "Months";
pvt.CompactLayoutRowHeader = "Description";
就您的月份标题而言,如果您对它们不是实际日期并且只是呈现为文本,那么您始终可以将实际源数据的NumberFormat
属性设置为"@"
,这是文本。
- 编辑 -
如果源数据是实际日期 - 日期,则有两个选项。最好的选择是将它保留为日期,这样排序等方式将按预期方式工作(否则“8月15日”似乎在“7月15日”之前)。这样做的方法是更改NumberFormat
的{{1}}:
PivotField
另有所谓:
monthField.NumberFormat = "mmm yyyy";
这应该按照您描述的方式格式化每个标题。
另一种方法是在新列中(从源数据中)将日期呈现为文本,但如果上述方法满足您的需求,则听起来不太理想。我能看到这样做的唯一原因是,如果你真的不希望它作为幕后的日期,无论出于何种原因。新列的公式如下:
pvt.PivotFields("MonthYr").NumberFormat = "mmm yyyy";