Создание документа Word API в Java

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

Я думал с помощью ПОИ Apache, http://poi.apache.org/ - оно лучшее с этой целью? можно ли совместно использовать впечатление от него?

8
задан Eran Medan 2 January 2010 в 08:57
поделиться

6 ответов

Я работал с POI раньше, и он, конечно же, способен генерировать документы Word. Но дьявол в деталях.

Word имеет тысячи возможностей: Вы можете поместить пронумерованные списки, начинающиеся с #13 с отрицательными отступами, в две объединенные ячейки таблицы, включенной в другую таблицу, которая сама по себе является частью пулевого списка... вы получите идею. Когда в документации POI говорится о том, что они являются незавершенной работой, это отражает то, что, вероятно, будет вечным состоянием попыток догнать (для нас, недокументированных) спецификацию Word.

Документы с разумно "нормальным" набором используемых возможностей хорошо поддерживаются POI, интерфейсы и методы которых разумны и последовательны, но иногда требуют некоторой работы. Но, как говорит Паскаль, документы с не слишком завышенным набором возможностей также поддерживаются RTF. У меня практически нет опыта "работы" с RTF, но, вероятно, это немного проще, чем работать с POI.

Если вы работаете в среде или для клиента, который настаивает на том, чтобы создаваемые документы были .DOC, а не . RTF, то POI - это ваш единственный выбор, если только вы не можете ввести шаг, в котором вы используете немного автоматизации Office для преобразования RTF в DOC.

Обновление: За это время у меня появилась еще пара идей.

Использование POI или создание RTF документов - это то, что вы можете сделать практически на любой платформе. В моей работе все серверы, осуществляющие подобную обработку, например, работают под Linux.

Однако, в вероятном случае, если ваши программы будут работать под Windows, есть другая альтернатива: Jacob http://www.land-of-kain.de/docs/jacob/

Jacob - это COM интерфейс для Java; он, по сути, позволяет "удаленно управлять" Windows-программами, такими как Word и Excel. Документ, на который я ссылаюсь выше, относится не к собственному сайту Jacob, а к одной странице с рецептами "cookie cutter" для использования Jacob. Сам проект находится на SourceForge: http://sourceforge.net/projects/jacob-project/ Но люди утверждают, и это правильно, что документации немного не хватает.

Jacob имеет преимущество перед всеми другими решениями, с которыми вы имеете дело в "настоящем" Word, и поэтому все возможности Word доступны для вас. Это будет альтернативой, если есть детали вашего документа, которые просто не могут быть обработаны с помощью POI или через формат RTF.

.
9
ответ дан 5 December 2019 в 07:11
поделиться

Если вы используете шаблон, и не хотите создавать документ с нуля, то для того, что я знаю, POI - это довольно хорошее решение. Вы открываете шаблон и выбираете зоны, которые хотите заменить.

Говорят, что POI все еще разрабатывается, но я использовал его в производственной среде, и на данный момент он работает довольно хорошо.

.
3
ответ дан 5 December 2019 в 07:11
поделиться

Я не уверен в точном статусе поддержки документов Word в Точках интереса, но, согласно сайту Точки интереса, работа еще продолжается (не могу сказать, что именно это означает). Поэтому на данный момент я бы не стал использовать POI, а попробовал бы сгенерировать RTF документ. Для этого можно было бы :

  • Использовать RTFTemplate - двигатель RTF to RTF, который может сгенерировать документ RTF в результате слияния модели RTF и данных.
  • Используйте iText, который изначально является генератором PDF, но также может генерировать RTF.
  • Постройте свое собственное пользовательское решение (но я бы не стал этого делать).

Я бы выбрал iText.

.
2
ответ дан 5 December 2019 в 07:11
поделиться

Если вы работаете с документами docx, docx4j является дополнительным параметром. Как и POI, он имеет открытый исходный код.

.
1
ответ дан 5 December 2019 в 07:11
поделиться

Вы должны изучить компоненты Aspose.Words. Недавно они начали предоставлять Java-версию компонента.

См. следующую ссылку: Aspose.Word для Java

Поддерживает автоматизацию, создание и расширенные возможности Word, такие как объединение почты без необходимости использования на машине экземпляра Microsoft Word. Реальные преимущества заключаются в том, что вы можете работать в контексте фактического документа Word, и вам не придется идти на компромисс, создавая RTF и т.д.

Версия Java в настоящее время не так полнофункциональна, как версия .Net, но основная функциональность ядра находится там, и они очень сильно настаивают на том, чтобы вскоре получить версию, эквивалентную по функциональности.

Кроме того, если вы покупаете версию Java, вы получаете годы бесплатных обновлений / поддержки по мере создания новых релизов.

.
1
ответ дан 5 December 2019 в 07:11
поделиться

Я создал и использую это: http://code.google.com/p/java2word

1
ответ дан 5 December 2019 в 07:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: