Как установить ячейку формата поля для сводной таблицы с Apache POI

Я хотел бы установить ячейку формата номера сводной таблицы. Значение поля Сумма баланса как # ##0 .

Сводная таблица, созданная с использованием кода на основе официального образца POI CreatePivotTable

Приведенный ниже код create и get CTPivotField pivotField . Но как установить его формат номера?

 pivotTable.addColumnLabel(DataConsolidateFunction.SUM, 2); CTPivotField pivotField = pivotTable .getCTPivotTableDefinition() .getPivotFields() .getPivotFieldArray(2); 

В MS Excel это делается следующими шагами (см. Снимок экрана):

  1. щелкните правой кнопкой мыши на сводной таблице суммы баланса Value
  2. выберите « Настройки поля»
  3. щелкните Количество …
  4. установить формат ячеек

Помогите решить, совет или любую идею.

Установка ячейки формата чисел сводной таблицы с помощью Microsoft Excel

Формат полей сводной таблицы устанавливается CTDataField.setNumFmtId(long numFmtId) для значений и CTPivotField.setNumFmtId(long numFmtId) для столбцов и строк .

numFmtId – номер идентификатора формата. Доступные коды формата представлены в списке Формат ячеек – Пользовательская категория: введите описание изображения здесь Предопределенные коды формата, благодаря Ji Zhou – MSFT , находятся здесь:

 1 0 2 0.00 3 #,##0 4 #,##0.00 5 $#,##0_);($#,##0) 6 $#,##0_);[Red]($#,##0) 7 $#,##0.00_);($#,##0.00) 8 $#,##0.00_);[Red]($#,##0.00) 9 0% 10 0.00% 11 0.00E+00 12 # ?/? 13 # ??/?? 14 m/d/yyyy 15 d-mmm-yy 16 d-mmm 17 mmm-yy 18 h:mm AM/PM 19 h:mm:ss AM/PM 20 h:mm 21 h:mm:ss 22 m/d/yyyy h:mm 37 #,##0_);(#,##0) 38 #,##0_);[Red](#,##0) 39 #,##0.00_);(#,##0.00) 40 #,##0.00_);[Red](#,##0.00) 45 mm:ss 46 [h]:mm:ss 47 mm:ss.0 48 ##0.0E+0 49 @ 

Полный список предопределенных кодов формата в MSDN NumberingFormat Class

Ниже приведен пример применения полей сводной таблицы форматирования:

 package ru.inkontext.poi; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.apache.poi.ss.SpreadsheetVersion; import org.apache.poi.ss.usermodel.DataConsolidateFunction; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.util.AreaReference; import org.apache.poi.ss.util.CellReference; import org.apache.poi.xssf.usermodel.XSSFPivotTable; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTDataFields; import java.io.FileOutputStream; import java.io.IOException; import java.util.List; import java.util.Optional; public class CreatePivotTableSimple { private static void setFormatPivotField(XSSFPivotTable pivotTable, long fieldIndex, Integer numFmtId) { Optional.ofNullable(pivotTable .getCTPivotTableDefinition() .getPivotFields()) .map(pivotFields -> pivotFields .getPivotFieldArray((int) fieldIndex)) .ifPresent(pivotField -> pivotField .setNumFmtId(numFmtId)); } private static void setFormatDataField(XSSFPivotTable pivotTable, long fieldIndex, long numFmtId) { Optional.ofNullable(pivotTable .getCTPivotTableDefinition() .getDataFields()) .map(CTDataFields::getDataFieldList) .map(List::stream) .ifPresent(stream -> stream .filter(dataField -> dataField.getFld() == fieldIndex) .findFirst() .ifPresent(dataField -> dataField.setNumFmtId(numFmtId))); } public static void main(String[] args) throws IOException, InvalidFormatException { XSSFWorkbook wb = new XSSFWorkbook(); XSSFSheet sheet = wb.createSheet(); //Create some data to build the pivot table on setCellData(sheet); XSSFPivotTable pivotTable = sheet.createPivotTable( new AreaReference("A1:C6", SpreadsheetVersion.EXCEL2007), new CellReference("E3")); pivotTable.addRowLabel(1); // set second column as 1-th level of rows setFormatPivotField(pivotTable, 1, 9); //set format of row field numFmtId=9 0% pivotTable.addRowLabel(0); // set first column as 2-th level of rows pivotTable.addColumnLabel(DataConsolidateFunction.SUM, 2); // Sum up the second column setFormatDataField(pivotTable, 2, 3); //set format of value field numFmtId=3 # ##0 FileOutputStream fileOut = new FileOutputStream("stackoverflow-pivottable.xlsx"); wb.write(fileOut); fileOut.close(); wb.close(); } private static void setCellData(XSSFSheet sheet) { String[] names = {"Jane", "Tarzan", "Terk", "Kate", "Dmitry"}; Double[] percents = {0.25, 0.5, 0.75, 0.25, 0.5}; Integer[] balances = {107634, 554234, 10234, 22350, 15234}; Row row = sheet.createRow(0); row.createCell(0).setCellValue("Name"); row.createCell(1).setCellValue("Percents"); row.createCell(2).setCellValue("Balance"); for (int i = 0; i < names.length; i++) { row = sheet.createRow(i + 1); row.createCell(0).setCellValue(names[i]); row.createCell(1).setCellValue(percents[i]); row.createCell(2).setCellValue(balances[i]); } } } 

https://github.com/stolbovd/PoiSamples

  • Excel VBA удаляет бланки из сводной группы
  • Как я могу включить сводную таблицу прямо в исходные данные на листе (используя EPPlus)?
  • Ошибка несоответствия типа при создании сводной таблицы в VBA (отладчик, указывающий на сводную диаграмму)
  • Ошибка метода кеша таблицы VBA Excel VBA
  • Применение многозначных фильтров в Excel Pivot
  • Динамический диапазон сводной таблицы
  • Ошибка производительности при выполнении запроса MDX при перемещении измерения из строки в столбец
  • Создание макроса сводной таблицы - нужно удалить отмеченные строки с помощью кода
  • Как использовать сводную таблицу excel для обработки групп данных с одним столбцом общего доступа и такими же подполями
  • Excel Условное форматирование расширяется с помощью сводных таблиц?
  • Эквивалентный расчет MDX для DAX SUMX
  • Interesting Posts

    Удаление всех строк в Excel после одного, содержащего поиск текста

    Скопировать условное форматирование в другие столбцы в электронной таблице, которые не сгруппированы

    Сверление вверх / вниз с помощью кнопок

    Как добавить 90 дней к дате, но найдите ближайшую среду к этому 90-дневному периоду в Excel?

    Изменение ширины столбца в столбце переменной в vba?

    Q: Перемещение между вкладками Excel с индексами

    Таблицы сводных таблиц Excel, не отображающие правильные столбцы при переключении с Mac на Windows и наоборот

    Предоставляет ли Excel предупреждение об ошибке формулы / переменной для проверки данных?

    Заказ WooCommerce и плагин Custom Fields WooCommerce плюс Билеты на мероприятия Plus

    Как преобразовать внутреннюю дату Oracle в дату Excel в Excel?

    Нажмите <span>? элемент или кнопку без имени или получить представление на работу

    Выход VBA в отношении кнопок выбора

    Функция SUM в Excel

    Найдите конкретный текст, который хранится в cloumn из ячейки, у которой так много данных

    Получить значение ячейки в Excel из диапазона

    Давайте будем гением компьютера.