Как исправить ошибки в документе сгенерированного мс-слова Java2Word - PullRequest
0 голосов
/ 29 мая 2019

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

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

Когда я нажимаю кнопку «Перейти к» во всплывающем окне «Восстановление Word»окно (как только я открыл свой документ в рекавери) ничего не происходит, и из диалога я не могу ничего сказать вообще.(на немецком языке) German Word Pop Up Window

Я успешно использовал 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();
        }
    }

Вставить ссылку на текстовый форматированный документ Word Вставьте ссылку на текст Word Doc

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

1 Ответ

1 голос
/ 29 мая 2019

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

enter image description here

...