如何覆盖数据透视表(Aspose Cells)上的列标签文本?

我正在使用包含“2015年1月1日”,“2015年11月1日”等值的源数据

可以理解的是,当我将这些值作为Column PivotFieldType添加时:

pivotTable.AddFieldToArea(PivotFieldType.Column, MONTHYR_COLUMN); pivotTable.ColumnHeaderCaption = "Months"; 

…列中的值对应于从原始数据中提取的值(“2015年1月1日”,“2015年11月1日”等):

在这里输入图像说明

然而,我不希望这些文字表述(“2015年1月1日”,“2015年11月1日”等)的标签为“10月15日”,“11月15日”等。

我怎么能做到这一点?

在将数据写入数据表(从“2015年10月1日”到“10月15日”等)之前,是否必须更改数据?或者有什么办法可以中断Pivot上的列标签写入过程表?

UPDATE

似乎从答案的链接提供的代码应该工作; 我可以通过它循环,值是正确的,但没有任何变化。 这是我的代码:

 // Get "10/1/2015" to display as "Oct 15" Style columnStyle = new CellsFactory().CreateStyle(); columnStyle.Custom = "mmm yy"; CellArea columnRange = pivotTable.ColumnRange; for (int c = columnRange.StartColumn; c < columnRange.EndColumn; c++) { pivotTable.Format(columnRange.StartRow + 1, c, columnStyle); } 

更新2

即使这样做什么也不做–C7的价值仍然是“2015年10月1日”

 Cell cell = pivotTableSheet.Cells["C7"]; cell.PutValue("Oct 15"); 

您可以通过一些像WorksheetFunction.TEXT(monthPortion & "/01/" & yearPortion , "mmm")公式replaceGetMonthAsMMM函数

我通过更改生成数据透视表的源数据来解决此问题,如下所示:

 private void AddPivotData(String ItemCode, String ItemDescription, String Unit, String MonthYear, int Quantity, Decimal TotalPrice, Boolean IsContractItem, Double PercentageOfTotal, Double MonthlyPercentage) { . . . cell = sourceDataSheet.Cells[_lastRowAddedPivotTableData, 3]; cell.PutValue(ConvertToMMMYY(MonthYear)); . . . } // Comes in formatted YYYYMM (such as "201510"), returned as MMM YY (such as "Oct 15") private object ConvertToMMMYY(string MonthYear) { string yearPortion = MonthYear.Substring(0, 4); string monthPortion = MonthYear.Substring(4, 2); string yearSansCentury = yearPortion.Substring(2, 2); string monthNumAsStr = GetMonthAsMMM(monthPortion); return string.Format("{0}{1}", monthNumAsStr, yearSansCentury); } private string GetMonthAsMMM(string monthPortion) { if (monthPortion == "01") return "Jan"; if (monthPortion == "02") return "Feb"; if (monthPortion == "03") return "Mar"; if (monthPortion == "04") return "Apr"; if (monthPortion == "05") return "May"; if (monthPortion == "06") return "Jun"; if (monthPortion == "07") return "Jul"; if (monthPortion == "08") return "Aug"; if (monthPortion == "09") return "Sep"; if (monthPortion == "10") return "Oct"; if (monthPortion == "11") return "Nov"; if (monthPortion == "12") return "Dec"; return "Unrecognized Month Num"; }