word文档转html(只支持段落和表格)

复制代码
maven依赖
 <dependency>  
        <groupId>org.apache.poi</groupId>  
        <artifactId>poi-ooxml</artifactId>  
        <version>5.2.3</version>  
</dependency>  


import org.apache.poi.xwpf.usermodel.*;

import java.io.*;


public class WordToHtmlConverter {



    public static String convertWordToHtml(String filePath) throws IOException {
        StringBuilder htmlContent = new StringBuilder("<html><body>");

        try (FileInputStream fis = new FileInputStream(filePath);
             XWPFDocument document = new XWPFDocument(fis)) {

            // 首先处理段落
            for (XWPFParagraph paragraph : document.getParagraphs()) {
                htmlContent.append("<p>").append(getParagraphText(paragraph)).append("</p>");
            }

            // 然后处理表格
            for (XWPFTable table : document.getTables()) {
                htmlContent.append("<table border='1'>");
                for (XWPFTableRow row : table.getRows()) {
                    htmlContent.append("<tr>");
                    for (XWPFTableCell cell : row.getTableCells()) {
                        htmlContent.append("<td>");
                        for (XWPFParagraph paragraph : cell.getParagraphs()) {
                            htmlContent.append(getParagraphText(paragraph));
                        }
                        htmlContent.append("</td>");
                    }
                    htmlContent.append("</tr>");
                }
                htmlContent.append("</table>");
            }
        }

        htmlContent.append("</body></html>");
        return htmlContent.toString();
    }

    public static String convertWordToHtml(InputStream inputStream) throws IOException {
        StringBuilder htmlContent = new StringBuilder("<html><body>");

        try (XWPFDocument document = new XWPFDocument(inputStream)) {

            // 处理段落
            for (XWPFParagraph paragraph : document.getParagraphs()) {
                htmlContent.append("<p>").append(getParagraphText(paragraph)).append("</p>");
            }

            // 处理表格
            for (XWPFTable table : document.getTables()) {
                htmlContent.append("<table border='1'>");
                for (XWPFTableRow row : table.getRows()) {
                    htmlContent.append("<tr>");
                    for (XWPFTableCell cell : row.getTableCells()) {
                        htmlContent.append("<td>");
                        // 这里简单地将单元格中的文本内容添加到HTML中
                        // 注意:单元格可能包含多个段落,需要遍历它们
                        for (XWPFParagraph paragraph : cell.getParagraphs()) {
                            htmlContent.append(getParagraphText(paragraph));
                        }
                        htmlContent.append("</td>");
                    }
                    htmlContent.append("</tr>");
                }
                htmlContent.append("</table>");
            }

        }

        htmlContent.append("</body></html>");
        return htmlContent.toString();
    }

    // 辅助方法,用于获取段落中的文本内容
    private static String getParagraphText(XWPFParagraph paragraph) {
        StringBuilder text = new StringBuilder();
        for (XWPFRun run : paragraph.getRuns()) {
            text.append(run.getText(0));
        }
        return text.toString();
    }

    public static void main(String[] args) {
        try {
            String html = convertWordToHtml("xxx.doc");
            System.out.println(html); 
        } catch (IOException e) {
            e.printStackTrace();
        }
    }


}
相关推荐
辰海Coding2 分钟前
MiniSpring框架学习-增加事件发布的简化 IoC 容器
java·学习·spring·java-ee
云烟成雨TD3 分钟前
Spring AI Alibaba 1.x 系列【54】Interrupts 中断机制:析动态中断源码分析
java·人工智能·spring
布吉岛的石头4 分钟前
Java 程序员第 29 阶段-01:大模型微调入门:小样本业务适配方案
java·开发语言·人工智能
小白|4 分钟前
cann-learning-hub:昇腾CANN社区学习中心完全指南
java·c++·算法
高林雨露5 分钟前
Java 转 Kotlin 对照开发指南
java·开发语言·kotlin
java1234_小锋8 分钟前
Spring AI 2.0 开发Java Agent智能体 - 多模态支持
java·人工智能·spring
前端若水10 分钟前
使用 IndexedDB 在客户端存储对话记录
java·前端·人工智能·python·机器学习
Flittly10 分钟前
【日常小问】Spring Cloud Gateway 5.x 跨域和路由配置踩坑实录
java·spring boot·spring cloud
MY_TEUCK16 分钟前
【Java 后端 | 微服务远程调用实战】Nacos + OpenFeign 从入门到公共模块抽取
java·开发语言·微服务