Генерация DOCX в Java - PullRequest
       37

Генерация DOCX в Java

4 голосов
/ 29 января 2010

У меня есть шаблон docx, который я сохраняю как .xml, а затем анализирую содержимое. Затем я создаю новый обновленный текстовый документ. После того, как слово «документ» сформировано, я не могу его открыть. Там написано "документ поврежден". Я нажимаю ок. Затем он говорит: «Нажмите OK, если хотите получить документ». Я нажимаю ок. Тогда я получаю обновленный документ. Это происходит каждый раз. Я создал ту же программу, что и отдельное Java-приложение. Документ, сгенерированный через отдельное Java-приложение, открывается без ошибок. Кто-нибудь может дать мне понимание этого? Я использовал тот же код и для серверной части.

Вот код, который я использую для создания документа.

try {
    // Prepare the DOM document for writing
    Source source = new DOMSource(doc);

    // Prepare the output file          
    FileOutputStream file = new FileOutputStream(filename);  

    Result result = new StreamResult(file);
    // Write the DOM document to the file

    Transformer xformer = TransformerFactory.newInstance()
                .newTransformer();

    xformer.transform(source, result);

    file.close();
} catch (TransformerConfigurationException e) {

    System.out.println("Transformation Configuration Excepiton in WriteXMLFile");

} catch (TransformerException e) {

    System.out.println("Transformation Excepiton in WriteXMLFile");

} catch (Exception e) {

    System.out.println("Transformation Excepiton in WriteXMLFile");

    e.printStackTrace();

}

Ответы [ 4 ]

1 голос
/ 14 мая 2011

Вы можете использовать POI или docx4j , чтобы обеспечить создание действительных документов Word.

1 голос
/ 07 января 2011

Я использую библиотеку POI для генерации документов Word (.doc, а не .docx, но это тоже должно работать). С POI вы можете: - открой свой текстовый документ - редактируйте все, что вы хотите, с чистым API (не путайте в XML) - напишите результат

http://poi.apache.org/

0 голосов
/ 10 мая 2013

Я широко использовал Apache POI и docx4j и сказал, что docx4j более надежен, так как предлагает больше встроенной поддержки не только для самого документа, но и для таблиц и изображений. Многое из того, что делает docx4j, автоматизировано, где в областях POI Apache вам приходится много писать вручную для поддержки docx. К сожалению, мало что было сделано для POI для поддержки docx. Я бы предложил использовать docx4j, поскольку они имеют встроенную поддержку для открытия и сохранения нового файла .docx из коробки.

0 голосов
/ 02 апреля 2012

Вы проверяли кодировку JVM? У меня была эта проблема, и, наконец, я обнаружил, что в Eclipse у меня был UTF-8, но в автономном режиме я не указывал кодировку, поэтому JVM принимает ISO-8559.

Пожалуйста, проверьте его с параметром -Dfile.encoding=UTF-8.

...