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

2023-11-05

最近一段时间再研究文件解析和转换,网上找了好多资料用的版本都是比较老的,干脆自己去啃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去了

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

poi 解析word文档 一分钟入门,超简单 的相关文章

随机推荐

  • ASTM 协议

    ASTM 协议为标准组织美国材料实验室协会 ASTM 制定的在医疗临床实验室仪器和计算机系统间传输信息的一个标准 此标准有多个版本 本文中提到的版本为 E1394 97 下文中提到的 ASTM 均为 ASTM 的 E1394 97 是在 1
  • Kettle系列(一)下载安装与基础配置

    Kettle系列 一 下载安装与基础配置 说明 一 下载 二 目录结构 三 基础配置 1 环境变量 2 kettle配置 四 连接mysql8 五 连接其他数据库 六 总结 说明 更新时间 2023 08 13 17 47 本文记录了win
  • spring cloud系列学习(十、 使用Spring Security实现OAuth2授权认证存储redis)

    1 新增spring boot 导包
  • AOP获取方法返回值

    我们用Spring的AOP切面做日志收集或者记录的时候 在springboot中用 Aspect注解 比如 Aspect public class AdviceTest Before execution com abc service ma
  • xtu p1040 汉诺塔

    描述 约19世纪末 在欧州的商店中出售一种智力玩具 在一块铜板上有三根杆 最左边的杆上自上而下 由小到大顺序串着由64个圆盘构成的塔 目的是将最左边杆上的盘全部移到中间的杆上 条件是一次只能移动一个盘 且不允许大盘放在小盘的上面 这是一个著
  • Windows 7 64位机上搭建Android开发环境

    1 从http www oracle com technetwork java javase downloads jdk7 downloads 1880260 html下载Java JDK 根据机子本身配置 选择jdk 7u25 windo
  • Java整合GPT-3.5和GPT-4,让PPT制作变得更加轻松智能化

    在当今的商业环境中 PPT演示文稿已成为一种重要的沟通工具 然而 创建高质量的PPT往往耗时且繁琐 基于这个痛点 本文将介绍如何使用Java整合GPT 3 5 4 根据PPT模板自动生成完整的PPT 我们将使用Apache POI库操作来P
  • 通过ref使元素动态高度

    observeResize this nextTick gt const moreEditBoxHeight new ResizeObserver entries gt for let entry of entries 执行其他操作 let
  • centos8 安装docker环境

    CentOS8官方源不可用 需要切换到阿里云的centos8的源 先安装yum utils组件后 再增加docker源后 才可以进行docker的安装使用 备份centos8原有源信息 cp r etc yum repos d etc yu
  • 谈谈滞后补偿器与PI控制及其原理分析

    本文一览 1 什么是滞后补偿器以及和PI控制的联系 2 PI控制对系统的影响 1 什么是超前补偿器以及和PI控制的联系 上一篇文章提到了超前补偿器 超前这个词的含义就是相位提前 相位提前所带来的的好处就是减少振荡 加快系统的稳定 但是使用超
  • Android 状态栏、标题栏、屏幕高度

    http xqjay19910131 yahoo cn iteye com blog 1435249 android 状态栏 标题栏 屏幕高度 博客分类 android app 1 获取状态栏高度 decorView是window中的最顶层
  • VS2019配置Qt5.14.2以及在线配置Qt5.15.2

    简单记录下配置过程 一 配置Qt5 14 2 1 官网下载QT Index of archive qt 5 14 5 14 2 2 下载后 双击exe进行安装 博主这里安装到了目录D Qt Qt5 14 2 结合自己的路径 完毕后 环境变量
  • php关注获取微信code,基于PHP方法,微信公众号小程序获取code,access_token,openid,用户信息...

    发起获得code值链接 public function doPageGetcode appid yourappid 修改你的appid if appid return this gt result 10008 参数错误 这里的 redire
  • 蓝桥杯(Java) -day03

    1 蓝桥杯 Java day01 2 蓝桥杯 Java day02 一 滑行 蓝桥杯 2023省赛模拟题 滑行 问题描述 小蓝准备在一个空旷的场地里面滑行 这个场地的高度不一 小蓝用一个 n 行 m 列的矩阵来表示场地 矩阵中的数值表示场地
  • Flutter 图片选取及裁剪

    在开发项目里修改用户头像的功能 涉及到图片选取及裁剪 基本实现步骤如下 1 pubspec yaml 添加 image picker 1 0 1 image cropper 4 0 1 dependencies image picker 1
  • VMware ESXI 6 开启VT-x硬件虚拟化技术

    一般虚拟化主ESXi都会开启BIOS中的CPU虚拟化技术 INTEL叫VT x AMD的叫AMD V ESXI 6 0 CPU虚拟化是在web端设置的 在客户端vSphere中没有这个设置 切记
  • Qt中的坐标体系和内存回收

    目录 坐标体系 窗口的坐标原点 窗口的相对坐标 示例 内存回收 1 自动垃圾回收机制 2 对象树机制 示例 坐标体系 窗口的坐标原点 在Qt中 坐标系统一般是以窗口左上角为原点 向右为正方向X轴 向下为正方向Y轴 窗口的相对坐标 在一个 Q
  • GPU及GPU通用计算编程模型简介

    以下内容来自网络总结 NVIDIA公司在1999年发布GeForce256时首先提出GPU 图形处理器 的概念 随后大量复杂的应用需求促使整个产业蓬勃发展至今 GPU英文全称Graphic Processing Unit 中文翻译为 图形处
  • 报错记录torch.cuda.OutOfMemoryError: CUDA out of memory. Tried to allocate 90.00 MiB (GPU 0; 7.93 GiB to

    torch cuda OutOfMemoryError CUDA out of memory Tried to allocate 90 00 MiB GPU 0 7 93 GiB total capacity 758 34 MiB alre
  • poi 解析word文档 一分钟入门,超简单

    最近一段时间再研究文件解析和转换 网上找了好多资料用的版本都是比较老的 干脆自己去啃poi了 今天开始分享给大家 先从最近简单的做起 花不多说直接开始 项目基于maven构建