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

最近一段时间再研究文件解析和转换,网上找了好多资料用的版本都是比较老的,干脆自己去啃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 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();
    }
下面就是文件和不同的效果了
原文件没有任何的样式读取出来的效果

poi 解析word文档 一分钟入门,超简单_第1张图片
poi 解析word文档 一分钟入门,超简单_第2张图片

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

poi 解析word文档 一分钟入门,超简单_第3张图片
poi 解析word文档 一分钟入门,超简单_第4张图片

就是这么神奇,写Bug去了

你可能感兴趣的:(java,编程语言,系统运维,springboot,word,java,spring,boot,spring)