poi 解析word文档 一分钟入门,超简单

文章介绍了如何使用最新的ApachePOI库,特别是poi-ooxml和poi模块,进行Word文档(.docx)的解析和转换。通过示例代码展示了如何读取文档内容,包括纯文本和样式信息,并提到了不同段落处理的细节。
摘要由CSDN通过智能技术生成
最近一段时间再研究文件解析和转换,网上找了好多资料用的版本都是比较老的,干脆自己去啃poi了,今天开始分享给大家,先从最近简单的做起,花不多说直接开始,项目基于maven构建
<dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>5.2.2</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>5.2.2</version>
</dependency>
就这两个就够了比较新的poi简化了好多的操作,不要相信网上说的找一大堆没鸟用
	/**
     * 只针对纯文字
     * 表格 图片 后面会写到
     * @param args
     * @throws IOException
     */
    public static void main(String[] args) throws IOException {
        //加载文件
        File file = new File("中文.docx");
        //将文件转成流
        InputStream inputStream = Files.newInputStream(file.toPath());
        //加载poi
        XWPFDocument xwpfDocument = new XWPFDocument(inputStream);
        //创建poi解析器
        XWPFWordExtractor xwpfWordExtractor = new XWPFWordExtractor(xwpfDocument);
        //从解析器中获取文件信息
        XWPFDocument extractorDocument = xwpfWordExtractor.getDocument();
        //获取文件的总段落数
        List<XWPFParagraph> paragraphs = extractorDocument.getParagraphs();
        /**
         * 下面的就比较有意思了,真实的来讲你理解的段落和系统理解的段落有差距
         * 如果对文档不做处理就是读取那么可以用它来直接读取段落文字:paragraph.getText()
         * 如果对文档有样式 比如加粗 字体颜色等需要替换 那就需要用run.getText()
         * 通过这两个方法你会看到不同的段落效果
         * 文件有换行的时候读出来的全是null
         */
        for (XWPFParagraph paragraph : paragraphs) {
            if (paragraph.isEmpty()){
                continue;
            }
            if (StrUtil.isBlank(paragraph.getText())){
                continue;
            }
            log.info("不带样式段落文字:{}", paragraph.getText());
            //List<XWPFRun> runs = paragraph.getRuns();
            //if (runs.isEmpty()){
            //    continue;
            //}
            //for (XWPFRun run : runs) {
            //    if (StrUtil.isBlank(run.getText(0))){
            //        continue;
            //    }
            //      log.info("带样式的段落文字:{}", run.getText(0));
            //}
        }
        extractorDocument.close();
        xwpfWordExtractor.close();
        xwpfDocument.close();
        inputStream.close();
    }
下面就是文件和不同的效果了
原文件没有任何的样式读取出来的效果

源文件没有任何样式
在这里插入图片描述

文件有样式读取出来的效果,你可以有多种样式,这里只是演示

在这里插入图片描述
在这里插入图片描述

就是这么神奇,写Bug去了

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值