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


}
相关推荐
Hx_Ma166 小时前
SpringMVC框架提供的转发和重定向
java·开发语言·servlet
期待のcode6 小时前
原子操作类LongAdder
java·开发语言
舟舟亢亢7 小时前
Java集合笔记总结
java·笔记
小酒窝.7 小时前
【多线程】多线程打印ABC
java
乡野码圣7 小时前
【RK3588 Android12】RCU机制
java·jvm·数据库
JAVA+C语言7 小时前
如何优化 Java 多主机通信的性能?
java·开发语言·php
编程彩机9 小时前
互联网大厂Java面试:从分布式架构到大数据场景解析
java·大数据·微服务·spark·kafka·分布式事务·分布式架构
小酒窝.9 小时前
【多线程】多线程打印1~100
java·多线程
君爱学习9 小时前
基于SpringBoot的选课调查系统
java
APIshop9 小时前
Java 实战:调用 item_search_tmall 按关键词搜索天猫商品
java·开发语言·数据库