Как исправить ошибки в документе ms-word, сгенерированном Java2Word

Я использую библиотеку java2word для создания текстового документа из данных базы данных IBM Notes.

Моя проблема в том, что документ, который я получаю, интерпретируется как содержащий ошибки в слове ms и может быть восстановлен только по тексту.

Когда я нажимаю кнопку «Перейти» во всплывающем окне восстановления Word (после того, как я открыл свой документ в режиме восстановления), ничего не происходит, и из диалогового окна я вообще ничего не могу сказать. (на немецком языке) Как исправить ошибки в документе ms-word, сгенерированном Java2Word

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

Класс DataRow, используемый для временного хранения данных:

    public class DataRow {
    String Date;
    String VorgangDesc;
    String DayShort;
    double Hours;
    public DataRow(String Dayshort, String Vorgangdesc, double hours, String date1){
        Date=date1;
        VorgangDesc=Vorgangdesc;
        DayShort=Dayshort;
        Hours=hours;
        }
}

Класс BerichtsHeft, используемый для реализации java2word:

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;

import lotus.domino.Session;

import word.api.interfaces.IDocument;
import word.api.interfaces.IElement;
import word.utils.TestUtils;
import word.utils.Utils;
import word.w2004.Document2004;
import word.w2004.Document2004.Encoding;
import word.w2004.elements.BreakLine;
import word.w2004.elements.Table;
import word.w2004.elements.tableElements.TableEle;

public class BerichtsHeft {
        public String Name;
        public String startD;
        public Session CurrentS;
        public int TableCount=1;
        public String Abteilung;
        public int AusbildungsJahr;
        String[] ItemsLastRow = new String[] {"..." , "...", "..."};
        String[] ItemsFirstRow = new String[] {"Ausbildungsnachweis", "Nr." + TableCount, "Woche vom" + startD + "bis" + "e end"};
        PrintWriter writer = null;
        Table CurrentTable;
        IDocument myDoc;

        public BerichtsHeft(String strName, String startDate, Session CurrentSes, String abteilung){
            this.Name=strName;
            this.startD=startDate;
            this.CurrentS=CurrentSes;
            this.Abteilung=abteilung;
            this.myDoc = new Document2004();
            myDoc.encoding(Encoding.UTF_8);
        }
        public void Spacer(){
            myDoc.addEle(BreakLine.times(1).create()); 
        }
        public void createTable(ArrayList<DataRow> DataList){
            Table tbl = new Table();
            CurrentTable = tbl;
            String[] ItemsFlexible = new String[3];
            AddFirstRow(ItemsFirstRow);
            for(int ij2=0; ij2<DataList.size(); ij2++){
                ItemsFlexible[0]=DataList.get(ij2).DayShort.toString();
                ItemsFlexible[1]=DataList.get(ij2).VorgangDesc.toString();
                ItemsFlexible[2]=Double.toString(DataList.get(ij2).Hours);
                AddRow(ItemsFlexible);  
            }
            AddLastRow(ItemsLastRow);
            myDoc.addEle(CurrentTable);
            TableCount++;
            Spacer();
        }


        public void AddFirstRow(String[] Items){
                CurrentTable.addTableEle(TableEle.TH, Items);
        }
        public void AddRow(String[] items){
                CurrentTable.addTableEle(TableEle.TD, items);
        }
        public void AddLastRow(String[] items){
                CurrentTable.addTableEle(TableEle.TD, items);
        }
        public void logNext(){

        }
        public void SaveDoc(){
            File fileObj = new File("C:\\temp\\test2.doc");
            PrintWriter writer = null;
            try {
                writer = new PrintWriter(fileObj);
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            }
            String myWord = myDoc.getContent();
            writer.println(myWord);
            writer.close();
        }
    }

Ссылка Pastebin на текстовый документ Word Ссылка PasteBin на текстовый документ Word

Как лучше всего найти источник этих ошибок?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
373
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я нашел ошибку в текстовом документе, она была вызвана специальным символом, потому что кодировка была UTF_8, а не ISO8859_1.

Другие вопросы по теме