Как я могу переопределить текст метки столбца в сводной таблице (Aspose Cells)?

Я использую исходные данные, содержащие такие значения, как «01.10.2015», «01.11.2015» и т. Д.

Понятно, что когда я добавляю эти значения как PivotFieldType столбца:

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

... значения в столбцах соответствуют значениям, извлеченным из необработанных данных ("01.10.2015", "01.11.2015" и т. д.):

введите описание изображения здесь

Однако вместо текстового представления («01.10.2015», «01.11.2015» и т. Д.) Я хочу, чтобы метки были «15 октября», «15 ноября» и т. Д.

Как я могу этого добиться?

Придется ли мне изменить данные перед записью их в таблицу данных (с «01.10.2015» на «15 октября» и т. Д.) Или есть способ прервать процесс записи меток столбцов в сводной таблице Таблица?

ОБНОВИТЬ

Кажется, что код, предложенный по ссылке ответа, должен работать; Я могу пройтись по нему, и значения правильные, но ничего не меняется. Это мой код:

// 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 по-прежнему «01.10.2015».

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

person B. Clay Shannon    schedule 23.11.2016    source источник


Ответы (2)


Вы можете просто заменить функцию GetMonthAsMMM какой-нибудь формулой вроде WorksheetFunction.TEXT(monthPortion & "/01/" & yearPortion , "mmm")

person nightcrawler23    schedule 03.12.2016

Я решил проблему, изменив исходные данные, из которых создается сводная таблица, вот так:

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";
}
person B. Clay Shannon    schedule 29.11.2016
comment
Если кто-то захочет ответить на это (даже если просто использовать мой ответ в качестве основы), я хотел бы наградить награду, а не позволить ей просто исчезнуть в лабиринте глубин Bounty Wasteland (ожидается членство в ООН). - person B. Clay Shannon; 30.11.2016
comment
Разве вы не можете просто заменить функцию GetMonthAsMMM какой-нибудь формулой, например WorksheetFunction.TEXT (monthPortion & / 01 / & yearPortion, ммм) - person nightcrawler23; 02.12.2016
comment
Возможно, но это уже исправлено с помощью вышеизложенного, поэтому я не собираюсь возвращаться к этому сейчас. У меня есть и другие беды, которые я могу нанести. - person B. Clay Shannon; 02.12.2016
comment
@ nightcrawler23: Тем не менее, дайте ответ, и я дам вам награду - кто-нибудь может ее получить! Срок его действия истекает ... - person B. Clay Shannon; 03.12.2016