gpt4 book ai didi

apache - 在使用 apache poi 替换 Microsoft 2007 (HWPFDocument) 文档的内容时需要帮助

转载 作者:行者123 更新时间:2023-11-29 05:52:15 25 4
gpt4 key购买 nike

首先,我觉得使用 Apache POI API 不是很容易,就像任何其他 Java API 一样,因为我很困惑哪些是修改 docx 内容所需的所有 jar 文件,我正在使用 poi-scratchpad- 3.1-beta1.jar 和 poi-3.2-FINAL-20081019.jar(HWPFDocument 类)但在某些论坛中它指向其他一些不同名称和不同版本的 poi jar 文件...(表明使用 XSSFDocument 类)。

我的要求是用一些文件内容替换一些文本。为此,我使用以下代码替换 Microsoft 2007(docx 文件)的内容。我最终得到了错误说..

org.apache.poi.poifs.filesystem.OfficeXmlFileException:提供的数据似乎在 Office 2007+ XML 中。 POI只支持OLE2 Office文档

import java.io.*;
import org.apache.poi.POIDocument;
import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.usermodel.CharacterRun;
import org.apache.poi.hwpf.usermodel.Range;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;

public class GenerateTicket {

public static void main(String[] args) {

final String FILE_PATH = "/home/mateen/Desktop/Ticket.docx";
try {
File file = new File(FILE_PATH);
FileInputStream fis = new FileInputStream(file);
POIFSFileSystem poifs = new POIFSFileSystem(fis);
HWPFDocument doc = new HWPFDocument(poifs);
Range range = doc.getRange();
CharacterRun run = range.insertAfter("Hello POI CORE/HWPF !!!");
run.setBold(true);
run.setItalic(true);
doc.write(new FileOutputStream("/home/mateen/Desktop/FromTicket.Docx"));

} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

}
}

所以...

  • 有没有人知道为什么需要两个单独的 jar 文件
  • 我可以做些什么来让我的代码工作?

最佳答案

HWPF 适用于旧的、基于 OLE2 的 .doc 文件。如果您想使用较新的 OOXML .docx 文件,则需要改用 XWPF。

接下来,您使用的是旧版本的 POI,以及不匹配的版本。您应该确保您使用的是最新版本,并确保您所有的 POI jar 都来自同一版本。要确定您想要什么 Jar 以及它们具有什么依赖项,请参阅 component overview page了解详情。

关于apache - 在使用 apache poi 替换 Microsoft 2007 (HWPFDocument) 文档的内容时需要帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13455411/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com