빠른 도움이 필요합니다. 보고서를 생성하는 Java 프로그램을 작성하려고합니다. docx 파일에 보고서 템플릿이 있습니다.commons.io.FileUtils를 사용하여 docx 파일을 읽고 쓰는 방법은 무엇입니까?
내가 원하는 것은 해당 docx 파일을 템플릿으로 사용하고 여러 레코드에 여러 번 데이터를 넣은 다음 새 docx 파일에 작성하는 것입니다. 주요한 것은 포맷팅과 들여 쓰기를 docx 파일 안에 유지하기를 원한다는 것입니다. 총알 데이터입니다. 그리고 그게 바로 문제입니다.
다음은 당신이 볼 수 있듯이, 나는 Fileutils의 읽기 및 방법을 쓰기 사용 UTF_8 인코딩을 사용하고
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();
}
}
, 위의 작업을 처리하는 코드의 조각이다. 그것은 단지 추측이며, 나는 똑같은 것에 대해 확신하지 못합니다. 내가 새로 생성 된 docx 파일 내용을 문자열 작성기에 추가하려고 콘솔에 같은 내용을 인쇄하지만 보조입니다. 중요한 것은 docx가 제대로 작성되어야한다는 것입니다. 그러나 운이 없다.
이 메시지가 출력되면 이상한 문자가 표시되고 읽을 수 없습니다. 새로 생성 된 docx 파일을 열려고해도 열리지 않습니다.
올바른 형식으로 데이터를 가져 오려면 어떻게해야합니까? 이 보고서를 생성하기 위해 템플릿으로 사용하고있는 ReportTemplate.docx의 이미지 파일을 첨부하고 있습니다. 내가 사용하고 공유지를-IO-2.4.jar 할 수 있다면 안내하시기 바랍니다
. 고마워.
답장을 보내 주셔서 감사합니다. 나는 POI를 사용한 적이 없다. 그것은 내가 템플릿으로 docx 파일을 사용하는 다음 동적으로 입력하고 다양한 반복에 대한 데이터를 추가하고 결국 모든 docx 파일에 모든 데이터를 쓸 수있게됩니까? – WebNoob
네, 이것을 쉽게 할 수 있습니다. 여기에서 [예제] (http://stackoverflow.com/questions/22615594/replacing-variables-in-a-word-document-template-with-java) –
을 찾을 수 있습니다. 도움이되었습니다. 나는 그 링크를 사용하고 몇 가지 코드를 시도했다. 그 문제에 직면 해있다. 여기에 새 질문을 만들었습니다. http://stackoverflow.com/questions/40547493/java-apache-poi-read-write-from-doc-file-issue 도움이되는지 확인하려면 :-) – WebNoob