Я хотел бы создать документ слова с помощью шаблона, заменить некоторые переменные (поля) и сохранить его как новый документ слова.
Я думал с помощью ПОИ Apache, http://poi.apache.org/ - оно лучшее с этой целью? можно ли совместно использовать впечатление от него?
Я работал с 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.
.Если вы используете шаблон, и не хотите создавать документ с нуля, то для того, что я знаю, POI - это довольно хорошее решение. Вы открываете шаблон и выбираете зоны, которые хотите заменить.
Говорят, что POI все еще разрабатывается, но я использовал его в производственной среде, и на данный момент он работает довольно хорошо.
.Я не уверен в точном статусе поддержки документов Word в Точках интереса, но, согласно сайту Точки интереса, работа еще продолжается (не могу сказать, что именно это означает). Поэтому на данный момент я бы не стал использовать POI, а попробовал бы сгенерировать RTF документ. Для этого можно было бы :
Я бы выбрал iText.
.Если вы работаете с документами docx, docx4j является дополнительным параметром. Как и POI, он имеет открытый исходный код.
.Вы должны изучить компоненты Aspose.Words. Недавно они начали предоставлять Java-версию компонента.
См. следующую ссылку: Aspose.Word для Java
Поддерживает автоматизацию, создание и расширенные возможности Word, такие как объединение почты без необходимости использования на машине экземпляра Microsoft Word. Реальные преимущества заключаются в том, что вы можете работать в контексте фактического документа Word, и вам не придется идти на компромисс, создавая RTF и т.д.
Версия Java в настоящее время не так полнофункциональна, как версия .Net, но основная функциональность ядра находится там, и они очень сильно настаивают на том, чтобы вскоре получить версию, эквивалентную по функциональности.
Кроме того, если вы покупаете версию Java, вы получаете годы бесплатных обновлений / поддержки по мере создания новых релизов.
.Я создал и использую это: http://code.google.com/p/java2word