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();
        }
    }


}
相关推荐
寒士obj4 分钟前
Spring事物
java·spring
柯南二号1 小时前
【Java后端】Spring Boot 集成 MyBatis-Plus 全攻略
java·spring boot·mybatis
桦说编程8 小时前
Java 中如何创建不可变类型
java·后端·函数式编程
lifallen8 小时前
Java Stream sort算子实现:SortedOps
java·开发语言
IT毕设实战小研8 小时前
基于Spring Boot 4s店车辆管理系统 租车管理系统 停车位管理系统 智慧车辆管理系统
java·开发语言·spring boot·后端·spring·毕业设计·课程设计
没有bug.的程序员9 小时前
JVM 总览与运行原理:深入Java虚拟机的核心引擎
java·jvm·python·虚拟机
甄超锋10 小时前
Java ArrayList的介绍及用法
java·windows·spring boot·python·spring·spring cloud·tomcat
阿华的代码王国10 小时前
【Android】RecyclerView复用CheckBox的异常状态
android·xml·java·前端·后端
Zyy~10 小时前
《设计模式》装饰模式
java·设计模式
A尘埃10 小时前
企业级Java项目和大模型结合场景(智能客服系统:电商、金融、政务、企业)
java·金融·政务·智能客服系统