Обновить сводную таблицу с помощью Apache POI - PullRequest
6 голосов
/ 18 июня 2009

В настоящее время я работаю над приложением Java, которое использует файл шаблона Excel, который содержит сводную таблицу.

В файле шаблона также есть таблица данных, которая задает сводную таблицу. Этот лист данных динамически загружается в приложение Java через API Apache POI.

Когда я открываю файл Excel, я должен обновить сводную таблицу вручную, чтобы правильно загрузить данные.

Можно ли как-нибудь обновить таблицу Pivot с помощью API POI, чтобы мне не приходилось делать это вручную?

Ответы [ 5 ]

5 голосов
/ 05 ноября 2013

Вы можете просто активировать опцию, которая будет обновлять сводную таблицу при каждом открытии файла.

Это Документация Microsoft гласит:

В диалоговом окне «Параметры сводной таблицы» на вкладке «Данные» установите флажок «Обновить данные при открытии файла».

4 голосов
/ 23 октября 2013

Это возможно. В PivotCacheDefinition есть атрибут refreshOnLoad, который можно установить на true. Затем кэш обновляется при открытии книги. Больше информации здесь .

В POI это может быть сделано путем вызова метода setRefreshOnLoad(boolean bool), который принимает логическое значение в качестве параметра для CTPivotCacheDefinition.

EDIT: Apache POI теперь предоставляет возможность создавать сводные таблицы, и сводная таблица обновляется при загрузке по умолчанию. Класс XSSFPivotTable

3 голосов
/ 11 декабря 2009

В этом сообщении говорится, что вы можете включить опцию в сводной таблице, которая будет автоматически обновляться при каждом открытии книги:

Как мне обновить все сводные таблицы в моей книге Excel с помощью макроса?

Надеемся, что это все еще будет так после того, как вы использовали Apache POI для обновления или расширения строк данных, на которых основаны сводные таблицы.

1 голос
/ 08 декабря 2009

Основной ответ на этот вопрос - нет. POI является читателем формата документа и писателем. Обновление сводной таблицы - проблема движка Excel. Конечно, другое приложение может попытаться повторить поведение движка Excel здесь, но это действительно будет ужасно. Я рекомендую использовать Джоэла для обхода доступа к COM-объектам Excel через веб-сервис для выполнения такого рода действий.

0 голосов
/ 23 июня 2017

Это может сработать:

XSSFPivotTable pivotTable = pivotSheet.getPivotTables().get(0);     
pivotTable.getPivotCacheDefinition().getCTPivotCacheDefinition().setRefreshOnLoad(true);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...