Создание диаграммы Excel с использованием Apache POI - PullRequest
16 голосов
/ 28 июля 2010

Мне нужно создать лист Excel из моего кода Java, который содержит такие диаграммы, как гистограмма, линейная диаграмма и т. Д., С использованием библиотеки Apache POI. Является ли это возможным? Я не могу найти ни одного полезного примера кода для того же.

Есть ли другая альтернатива этому, кроме библиотеки POI для Java?

Ответы [ 6 ]

17 голосов
/ 30 июля 2010

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

6 голосов
/ 01 мая 2012

В poi-3.8 поддержка графиков, похоже, идет.

См. это обсуждение .

И, в частности, пример .

4 голосов
/ 28 июля 2010

Есть ли другая альтернатива этому, кроме библиотеки POI для Java?

Есть и несколько других библиотек, но я не уверен, что можно написать такую ​​вещь, как диаграмма.

Если вы можете использовать более новые версии Office (те, которые используют файлы формата на основе XML), чем вы могли бы использовать другой подход:

  • создайте файл Excel с более новой версией Office, содержащий нужные вам диаграммы и некоторые фиктивные данные.
  • распакуйте этот файл Excel и извлеките файлы XML изнутри. Наибольший интерес будут представлять файлы xl \ worksheets \ sheet1.xml xl \ worksheets \ sheet2.xml или xl \ worksheets \ sheet3.xml (в зависимости от того, какие листы использовались)
  • Взгляните на формат файла (он сложнее, чем использование POI), но не должно быть так сложно определить «фиктивные» данные, которые вы вводили ранее.
  • Используйте Velocity или FreeMarker, чтобы преобразовать этот XML-файл в шаблон (заменив фиктивные данные переменными и макросами, что даст тот же результат)
  • Напишите небольшую программу (всего несколько строк), которая принимает реальные данные, сливается с шаблоном и упаковывает все обратно в zip-файл, но помещает расширение * .xlsx.

Я знаю, что описанные выше шаги выглядят немного сложнее, но если у вас нет слишком сложных файлов Excel, это должно быть проще, чем кажется.

2 голосов
/ 06 октября 2010

Нить выглядит старой, и я не знаю, нашли ли вы какой-то способ или все еще ищете его.

Но вот что я хотел бы сделать.Есть бесплатная библиотека с именем JFreeChart .Это можно использовать для создания файла JPG или PNG, который затем можно вставить в файл Excel при создании его с помощью Apache POI.

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

Итак, сейчас я собираюсь провести небольшое исследование.Я почти уверен, что поскольку вопрос задан, в Apache POI должна быть добавлена ​​функция или другой элегантный способ работы.Если я найду что-нибудь, я обязательно опубликую свои выводы здесь.

---- ОБНОВЛЕНИЕ ----

В моем исследовании, длившемся около часа, я смог найти только один подходящийбиблиотека под названием SmartXLS (пожалуйста, Google, я не мог опубликовать ссылку, потому что я новичок, и механизм защиты от спама сработал) , что удаленно близко к тому, что я буду использовать.Вы можете генерировать как Excel, так и график с помощью программы.Веб-сайт очень прост, и я не смог найти информацию о лицензировании, поэтому я предполагаю, что это бесплатно для личного и коммерческого использования.Я смог загрузить библиотеку без каких-либо проблем.Я еще не использовал это.Дайте ему шанс и дайте нам знать, как это работает.

1 голос
/ 25 мая 2016

Вот рабочий пример .

  • У меня есть данные в формате JSON и файл шаблона .xlsm с макросом. - в Excel

  • Клонирует лист шаблона каждый раз, когда необходимо создать лист с диаграммой, помещает требуемый тип диаграммы в z1 и изменяет линейную диаграмму по умолчанию, которая была вставлена, на соответствующий тип диаграммы. Удаляет тип диаграммы из z1, чтобы избежать многократного выполнения.

Надеюсь, это поможет.

1 голос
/ 28 июля 2010

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

Создайте файл Excel, который включает макрос, который создает гистограмму и т. Д. Для некоторых данных (с использованием Excel обычным способом).Затем с помощью Apache POI создайте файл с нужными вам данными и запустите Excel из Java, выполнив макрос, который создает диаграммы.

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