当前位置: 首页 > 知识库问答 >
问题:

需要帮助使用apache poi替换microsoft 2007(HWPFDocument)文档的内容

庞旺
2023-03-14

首先,我觉得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文件)的内容。我最后的错误是。。

组织。阿帕奇。poi。poifs。文件系统。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文件
  • 我能做些什么使我的代码工作

共有1个答案

须捷
2023-03-14

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

接下来,您使用的是旧版本的POI,以及不匹配的版本。您应该确保您使用的是最新版本,并确保您的所有POI jar都来自同一版本。要确定您想要的Jars以及它们具有哪些依赖关系,请参阅组件概述页面了解详细信息。

 类似资料:
  • 内嵌的帮助文档 记不住一些函数或者搜索方法?随时可以参考 Timelion 内嵌的帮助文档。 Timelion 表达式语言是嵌入式的。点击页面顶部的 Docs 菜单查看可用函数和详细内嵌手册。在查询命令行中输入函数, Timelion 就会实时显示参数提示。

  • 我需要一些帮助用JSOUP解析这个html。我正在尝试从表中的每一列获取数据值。我一直在看JSoup文档,试图弄清楚我到底需要做什么,但还是不确定。看起来网站使用了CSS和内联格式的组合;其中大部分可以转换为CSS并减小页面大小。 这是html文件的一个小片段(实际上差不多有5 MB大小)。 更新:我已经更新了源代码,以更准确地显示html的结构。我假定tbody将位于表元素中是一个给定的条件。我

  • 开发准备 1、注册智齿客服账号 2、下载APP 3、开放平台接口(Open API),结合企业的二次开发,必要参数: app_key(由智齿进行生成,请联系智齿商务人员或售后人员) appid(由智齿进行生成,请联系智齿商务人员或售后人员) 目录 智齿科技产品主要分为智齿智能客服系统和智齿智能外呼系统,除了产品自身提供了强大的功能以外,还提供了完善的开放平台,包括完善的Open API、以及客服系

  • 在中创建android模块需要一点帮助

  • 问题内容: 我正在使用MAT比较两个堆转储。我每天都进行堆转储,并且每天增长约200兆。我认为该泄漏与java.util.zip有关,这是因为该表显示的内容,也是因为我们最近添加了一个新过程,该过程可以压缩和解压缩很多文件。(见图片) 此时,我打开支配器并过滤。 充气机 。那产生了大量的java.util.zip.Inflater。现在,我想看看是什么使它们保持打开状态,所以我选择了一个,并运行了

  • 我试图创建一个Java正则表达式,如果字符串末尾有奇数个反斜杠(),它将返回true,如果偶数,则返回false。 这是我的正则表达式 当我编译代码时,我得到以下异常 线程“main”java.util.regex.PatternSyntaxException中的异常:索引15^([^])(\)附近的未关闭字符类\$ 如果我使用M模式编译并运行良好,则可以使用反斜杠代替反斜杠 我知道这是一个逃避的