Подтвердить что ты не робот

Создание диаграммы Excel с использованием Apache POI

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

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

4b9b3361

Ответ 1

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

Ответ 3

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

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

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

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

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

Ответ 4

Поток выглядит старым, и я не знаю, вы уже поняли способ или все еще ищете его.

Но вот что я буду делать. Существует бесплатная библиотека под названием JFreeChart. Вы можете использовать это для создания файла JPG или PNG, который затем можно вставить в файл excel при его создании с помощью Apache POI.

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

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

---- UPDATE ----

В моих исследованиях, длившихся около часа, я мог найти только одну подходящую библиотеку под названием SmartXLS (пожалуйста, google, я не мог опубликовать ссылку, потому что я новичок и механизм предотвращения спама)/strong > , который удаленно близок к тому, что я буду использовать. Вы можете генерировать как excel, так и диаграмму с помощью программы. Веб-сайт очень прост, и я не мог найти никакой информации о лицензировании, поэтому я предполагаю, что он бесплатный для личного и коммерческого использования. Мне удалось скачать библиотеку без проблем. Я еще не использовал его. Сделайте снимок и сообщите нам, как это работает.

Ответ 5

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

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

Ответ 6

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

  • У меня есть данные в файле JSON и .xlsm с макросом. - нет необходимости в описании диаграмм, данных или диапазонов в excel

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

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