You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否使用Apache POI将格式化HTML内容写入Word文档?

在Apache POI中嵌入带格式的HTML到Word文档

要在Apache POI生成的Word文档中还原HTML的基础格式(列表、粗体、斜体等),可以利用XWPFParagraph的底层CTP对象提供的importXHTML方法,直接将HTML内容导入到指定段落中。

实现步骤及代码示例

  1. 创建Word文档实例,定位到需要插入HTML的位置(可以是新段落或现有段落)
  2. 解析HTML内容,通过CTP.importXHTML方法将HTML结构和样式导入到Word段落中
  3. 保存文档完成输出
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTP;
import org.w3c.dom.Document;
import org.w3c.dom.Element;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import java.io.ByteArrayInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class HtmlToWordConverter {
    public static void main(String[] args) {
        try (XWPFDocument doc = new XWPFDocument()) {
            // 添加前置说明段落
            XWPFParagraph introPara = doc.createParagraph();
            introPara.createRun().setText("以下是从HTML导入的带格式内容:");

            // 待导入的HTML示例内容
            String htmlContent = "<ul>" +
                    "<li>列表项1:<b>粗体文本</b></li>" +
                    "<li>列表项2:<i>斜体文本</i></li>" +
                    "<li>列表项3:<u>带下划线文本</u></li>" +
                    "</ul>" +
                    "<p>独立段落:包含<strong>加粗</strong>和<em>斜体</em>的混合格式</p>";

            // 创建用于承载HTML的段落
            XWPFParagraph htmlHostPara = doc.createParagraph();
            CTP ctp = htmlHostPara.getCTP();

            // 解析HTML并导入到Word段落
            DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
            DocumentBuilder builder = factory.newDocumentBuilder();
            Document htmlDoc = builder.parse(new ByteArrayInputStream(htmlContent.getBytes()));
            Element htmlRoot = htmlDoc.getDocumentElement();
            ctp.importXHTML(htmlRoot);

            // 保存生成的Word文档
            try (FileOutputStream out = new FileOutputStream("formatted-content.docx")) {
                doc.write(out);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

依赖配置(Maven)

确保项目中引入以下必要依赖:

<dependencies>
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml</artifactId>
        <version>5.2.5</version>
    </dependency>
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml-schemas</artifactId>
        <version>4.1.2</version>
    </dependency>
    <dependency>
        <groupId>xerces</groupId>
        <artifactId>xercesImpl</artifactId>
        <version>2.12.2</version>
    </dependency>
</dependencies>

注意事项

  • 支持的HTML标签:基础格式标签<b>, <i>, <u>, <strong>, <em>,列表标签<ul>, <ol>, <li>,段落标签<p>等都能被正确解析
  • 复杂CSS样式:POI对复杂CSS的支持有限,若需还原更复杂的样式,可考虑结合docx4j等第三方库
  • 特殊字符处理:HTML中的特殊字符(如<, >)需确保已正确转义,避免解析失败

内容的提问来源于stack exchange,提问作者Mohammad Ali

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 01:47:34