Применить числовой формат в сводных полях - PullRequest
2 голосов
/ 07 марта 2012

Я могу применить NumberFormat к полям сводки, используя свойство Microsoft.Office.Interop.Excel.PivotFields. Но это не будет применять тот же формат для суммированных полей. Есть ли какое-то отдельное свойство для суммированных полей в сводной таблице, которое мне не хватает?

Microsoft.Office.Interop.Excel.PivotFields pFields = pivotTable.PivotFields();
        foreach (Microsoft.Office.Interop.Excel.PivotField pf in pFields)
            if (pf.DataType == XlPivotFieldDataType.xlNumber)
                pf.NumberFormat = "#,##0.00";

1 Ответ

1 голос
/ 26 апреля 2012

Документация по этим элементам не совсем кристально чиста, но после небольшого разбора, проб и ошибок похоже, что вы хотите получить свойство PivotTable.VisibleFields, которое вам нужно привести к объекту PivotFields, чтобыитерации:

Excel.PivotFields vFields = (Excel.PivotFields)pivotTable.VisibleFields;

Это даст вам все видимые поля в таблице (в отличие от PivotTable.PivotFields(), который, кажется, только дает столбец меток строк и исходные данные).Возможно, вам придется проверить значение каждого из них, прежде чем устанавливать формат чисел, в противном случае я думаю, что он будет применять его ко всему в таблице, что может быть не тем, что вы хотите:

foreach (Excel.PivotField pf in vFields)
{
    if (pf.DataType == Excel.XlPivotFieldDataType.xlNumber
        & pf.Value == "Sum of Price")
    {
        pf.NumberFormat = "#,##0.00";
    }
}

Если вы хотитев частности, вы попадаете в одну ячейку, затем вы можете получить доступ к PivotField.PivotItems и просмотреть их для каждого PivotField объекта:

    Excel.PivotItems pi = (Excel.PivotItems)pf.PivotItems();

Но я думаю, что большинство свойств PivotItem доступны только для чтения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...