需要一些快速帮助。我正在尝试编写一个java程序来生成报告。我在docx文件中有报告模板。
我想要做的是,将该docx文件用作模板,并将数据多次放入其中以用于各种记录,并将其写入新的docx文件。主要的是我想维护docx文件中内容的格式和缩进。它们是子弹数据。那就是问题所在。
以下是处理上述操作的代码,
public void readWriteDocx(HashMap<String, String> detailsMap) {
try {
File reportTemplateFile = new File("ReportTemplate.docx");
File actualReportFile = new File("ActualReport.docx");
StringBuilder preReport = new StringBuilder();
preReport.append("Some details about pre report goes here...: ");
preReport.append(System.lineSeparator());
String docxContent = "";
for (Map.Entry<String, String> entry : detailsMap.entrySet()) {
docxContent = FileUtils.readFileToString(reportTemplateFile, StandardCharsets.UTF_8);
// code to fetch and get data to insert into docxContent
docxContent = docxContent.replace("$filename", keyFilename);
docxContent = docxContent.replace("$expected", expectedFile);
docxContent = docxContent.replace("$actual", actualFile);
docxContent = docxContent.replace("$reportCount", String.valueOf(reportCount));
docxContent = docxContent.replace("$diffMessage", key);
FileUtils.writeStringToFile(actualReportFile, docxContent, StandardCharsets.UTF_8, true);
}
preReport.append(FileUtils.readFileToString(actualReportFile, StandardCharsets.UTF_8));
System.out.print(preReport.toString());
} catch (IOException e) {
e.printStackTrace();
}
}
如您所见,我正在使用FileUtils读写方法并使用UTF_8编码。这只是一个猜测,我不确定是一样的。我试图将新生成的docx文件内容附加到字符串生成器并在控制台上打印,但这是次要的。主要的是docx应该正确编写。但没有运气。
当打印时,它的所有奇怪的字符都没有可读性。当我尝试打开新生成的docx文件时,它甚至不会打开。
知道如何以正确的格式获取数据。我附加了我的ReportTemplate.docx看起来的图像文件,我用作模板来生成此报告。我正在使用commons-io-2.4.jar
如果可以,请指导。非常感谢。