ApachePOI操作Excel快速入门使用

简介

Apache POI 是一个处理Miscrosoft Office各种文件格式的开源项目,主要任务是创建和维护Java API,以基于Office Open XML标准(OOXML)和Microsoft的OLE 2复合文档格式(OLE2)处理各种文件格式, 该API的组件列表如下:

  • POIFS - 该组件是所有其他POI元素的基本因素。 它用于显式读取不同的文件。
  • HSSF - 用于读取和写入MS-Excel文件的xls格式。
  • XSSF - 用于MS-Excel的xlsx文件格式。 常用,
  • SXSSF - 用于比较大的xlsx文件格式。
  • HWPF - 用于读写MS-Word的doc扩展文件。
  • XWPF - 用于读写MS-Word的docx扩展文件。
  • HSLF - 用于阅读,创建和编辑PowerPoint演示文稿。
  • HDGF - 它包含MS-Visio二进制文件的类和方法。
  • HPBF - 用于读写MS-Publisher文件。

excel有两个常用后缀 ,一个是较老的版本 后缀是 xls ,一个是xlsx 2007及以后版本生成的文件格式 xls和xlsx的区别

简单来说就是,我们可以使用 POI 在 Java 中对Miscrosoft Office各种文件进行读写操作。一般情况下,POI 都是用于操作 Excel 文件。
在这里插入图片描述


快速入门:

Apache POI既可以将数据写入Excel文件,也可以读取Excel文件中的数据,接下来分别进行实现。

导入依赖:

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
</dependency>
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
</dependency>

1 将数据写入Excel表

使用的大致思路其实也和我们手动创建Excel一样

创建一个Excel文件 ======>> 创建一个Sheet页 ======>> 创建行 ======>> 创建行中的每一列

注意都是从0开始

    @Test
    public void testExcel() throws Exception {
//       创建一个Excel文件
        XSSFWorkbook sheets = new XSSFWorkbook();
//       创建一个Sheet页
        XSSFSheet sheet = sheets.createSheet("用户信息");
//       通过Sheet一行, 创建行   
        XSSFRow row1 = sheet.createRow(0);
//       创建行中的每一列
        row1.createCell(1).setCellValue("姓名");
        row1.createCell(2).setCellValue("城市");
//       创建第二行
        XSSFRow row2 = sheet.createRow(1);
        row2.createCell(1).setCellValue("张三");
        row2.createCell(2).setCellValue(23);

        XSSFRow row3 = sheet.createRow(2);
        row3.createCell(1).setCellValue("王五");
        row3.createCell(2).setCellValue(25);

        FileOutputStream outputStream = new FileOutputStream("E:\\MyProject\\testPOI.xlsx");

        sheets.write(outputStream);

//        关闭资源
        outputStream.close();
        sheets.close();
    }

此时就会在 E:\\MyProject\\ 生成一个 testPOI.xlsx 如下:

在这里插入图片描述

2 读取Excel表数据

下面就来读取刚才创建的文件
思路:
获取IO输入流 ======>> 得到当前文件对象 ======>> 获取Sheet对象 ======>> 得到行对象 ======>> 获取行中的单元格

    @Test
    public void testExcelRead() throws Exception {
//        获取IO输入流
        FileInputStream inputStream = new FileInputStream("E:\\MyProject\\testPOI.xlsx");
        // 通过构造器获取当前文件
        XSSFWorkbook xlsx = new XSSFWorkbook(inputStream);
//        通过名称获取指定的sheet页
        XSSFSheet userMessage = xlsx.getSheet("用户信息");
//        获取第一行
        XSSFRow row = userMessage.getRow(0);
//        获取第一行中的第二列,第三个的数据(第二个单元格和第三个单元格)
        XSSFCell oneTwo = row.getCell(1);   // 姓名
        XSSFCell oneThree = row.getCell(2); // 城市
        System.out.println(oneTwo + "  ---  " + oneThree);
//      获取第二行第三行的数据,  这里就模拟假如有多行的情况下
//       获取最后一行的行号
        int lastRowNum = userMessage.getLastRowNum();
        for (int i = 1; i <= lastRowNum; i++) {
            XSSFRow nowRow = userMessage.getRow(i);
            XSSFCell oneTwoMessage = nowRow.getCell(1);   // 姓名
            XSSFCell oneThreeMessage = nowRow.getCell(2); // 城市
            System.out.println(oneTwoMessage + "  ---  " + oneThreeMessage);
        }
//        关闭资源
        inputStream.close();
        xlsx.close();
    }

在这里插入图片描述

这里只是简单对POI中对Excel 中xlsx文件做了一个介绍, 其他的基本都大同小异没有太大的难度,对着APi 或文档即可直接使用,如果大家想看操作其他文件的实现, 可以参考下面官方文档和大佬的博客

官方文档(英文):

Overview (POI API Documentation) (51helpdoc.com)

推荐博客:
POI使用详解 - 空谷幽澜 - 博客园 (cnblogs.com)

POI中文API文档_poi中文api官方文档_weihubeats的博客-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/16141.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【KVM虚拟化】· 命令行KVM安装linux

目录 &#x1f341;基础本环境配置 &#x1f341;添加lvm卷 &#x1f341;qemu-img创建磁盘文件 &#x1f342;创建raw格式 &#x1f342;创建虚拟机 &#x1f342;转换格式为qcow2 &#x1f341;virt-install命令参数 &#x1f341;案例操作 &#x1f990;博客主页&#xff1a…

论文笔记:Model-Contrastive Federated Learning

0 简介 论文&#xff1a;Model-Contrastive Federated Learning 代码&#xff1a;https://github.com/QinbinLi/MOON 相关链接&#xff1a;本文主要是将SimCLR对比学习的思想迁移到联邦学习中&#xff0c;关于SimCLR的介绍见https://blog.csdn.net/search_129_hr/article/deta…

Mysql 管理

目录 0 课程视频 1 系统数据库 -> 安装完mysql ->自带四个数据库 2 常用工具 -> 写脚本用 2.1 mysql 客户端工具 2.2 mysqladmin 2.3 mysqlbinlog -> 二进制日志 -> 运维讲解 2.4 mysqlshow 2.5 mysqldump 备份用 ->导出 2.6 mysqlimport/source -…

工控老司机告诉你热电偶和RTD的区别

热电偶和热电阻都是温度传感器&#xff0c;但它们的原理、功能特性和应用场景有所不同。 一、原理区别 首先&#xff0c;热电偶是利用两种不同金属之间的热电效应来测量温度的。其原理是利用温度差引起的金属之间的热电势差进行测量。两种金属之间存在一种热电势&#xff08;…

LWIP协议与TCP/IP

1. 学习一个东西&#xff0c;先了解这个东西是干什么用的&#xff0c;哪些场景会用到它&#xff0c;与自己已经掌握的其他知识的联系 a. 例如&#xff1a;LWIP这个东西是干什么用的&#xff1a;他就是一个裁剪后保持大部分TCP/IP功能的协议。用少量的资源消耗实现一个较为完整的…

JavaWeb05(删除增加修改功能实现连接数据库)

目录 一.实现删除功能 1.1 url如何传参&#xff1f; xx.do?参数参数值&参数名参数值 1.2 servlet如何拿对应值&#xff1f; //根据参数名拿到对应的参数值 String str req.getParameter("参数名") 1.3 如何询问&#xff1f; οnclick"return con…

Python实现图像的手绘效果

用Python实现手绘图像的效果 1.图像的RGB色彩模式 图像一般使用RGB色彩模式&#xff0c;即每个像素点的颜色由红、绿(G)、蓝(B)组成。RGB三个颜色通道的变化和叠加得到各种颜色&#xff0c;其中&#xff1a; R红色&#xff0c;取值范围&#xff0c;0-255G绿色&#xff0c;取值…

【Java笔试强训 8】

&#x1f389;&#x1f389;&#x1f389;点进来你就是我的人了博主主页&#xff1a;&#x1f648;&#x1f648;&#x1f648;戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔&#x1f93a;&#x1f93a;&#x1f93a; 目录 一、选择题 二、编程题 &#x1f525;两种排…

什么是JVM?

目录 1、JVM的学习内容 2、JVM概述 3、字节码 4、虚拟机 5、HotSpot VM 6、Java代码的执行流程 1、JVM的学习内容 JVM大概分为三部分&#xff1a; 内存与垃圾回收字节码与类的加载性能监控与调优 2、JVM概述 JVM是运行在不同操作系统上的&#xff0c;和硬件没有直接交…

荔枝派Zero(全志V3S)基于QT实现在LCD显示图片

文章目录 前言一、配置 buildroot 及编译二、写 QT 代码三、编译可执行文件四、拷贝到 SD 卡五、上板子测试六、资源自取 前言 有这样一个需求&#xff0c;通过配置 QT&#xff0c;在 linux 下实现显示我所想要显示的图片&#xff0c;实现的方式是我可以在命令行将图片的路径作…

数据库单实例升级

一、单实例环境,全时长二个半钟多。详细图文说明到这下载 1、停止所有oracle相关进程。 Emctlstop dbconsole Isqlplusctl stop Lsnrctl stop sqlplus /nolog sql>conn /as sysdba Connectedtoanidleinstance. sql>shutdown 然后&#xff0c;冷备份下数据库cp…

第十二章 Transform组件(下)

上一章节中我们介绍了Transform组件的属性和方法。我们发现 Transform 中有right&#xff0c;up和forward&#xff0c;而 Vector3 类中也有right&#xff0c;up和forward&#xff0c;他们是一回事嘛&#xff1f;我们使用Forward来说明两者之间的区别。我们知道&#xff0c;改变…

nodejs+vue+elementui学生毕业生离校系统

学生毕业离校系统的开发过程中。该学生毕业离校系统包括管理员、学生和教师。其主要功能包括管理员&#xff1a;首页、个人中心、学生管理、教师管理、离校信息管理、费用结算管理、论文审核管理、管理员管理、留言板管理、系统管理等&#xff0c;前台首页&#xff1b;首页、离…

软件测试的测试用例

1.白盒和黑盒测试: 黑盒测试&#xff1a;把代码看成一个黑盒子&#xff0c;只关心输入和输出结果之间的关系 产品功能是否符合要求&#xff1b; 白盒测试&#xff1a;能够看到代码本身&#xff0c;针对代码本身进行测试&#xff0c;测试代码本身的逻辑是否符合规范。 2.测试用…

SOFA Weekly|SOFAArk 社区会议预告、Layotto 社区会议回顾、社区本周贡献

SOFA WEEKLY | 每周精选 筛选每周精华问答&#xff0c;同步开源进展 欢迎留言互动&#xff5e; SOFAStack&#xff08;Scalable Open Financial Architecture Stack&#xff09;是蚂蚁集团自主研发的金融级云原生架构&#xff0c;包含了构建金融级云原生架构所需的各个组件&am…

c#笔记-内置类型

内置类型 内置类型是一些有关键字表示的类型。关键字具有非常高的优先级&#xff0c;可以让你在没有别的配置的情况下&#xff0c; 只要用的是c#就可以使用。这也意味着这些类型是非常重要&#xff0c;或是基本的东西。 整数&#xff1a;byte, sbyte, short, ushort, int, ui…

展望Flink各版本及新特性

展望Flink各版本及新特性 一 Flink 1.9 版本1.1 细粒度批作业恢复1.2 State Processor API1.3 Stop-with-Savepoint1.4 新 Blink SQL 查询处理器预览1.5 Table API / SQL 的其他改进 二 Flink 1.10 [重要版本 : Blink 整合完成]2.1 内存管理及配置优化2.2 统一的作业提交逻辑2.…

【WCH】CH32F203基于内部RTC+I2C SSD1306 OLED时钟和温度显示

【WCH】CH32F203基于内部RTCI2C SSD1306 OLED时钟和温度显示 &#x1f4cc;相关篇《【WCH】CH32F203基于内部RTC时钟I2C SSD1306 OLED显示》&#x1f4fa;显示效果&#xff1a; ✨主要是在其基础 上增加温度显示&#xff0c;温度数据来源于DS18B20&#xff0c;更换了OLED驱动显…

大型Saas系统的权限体系设计(二)

X0 上期回顾 上文《大型Saas系统的权限体系设计(一)》提到2B的Saas系统的多层次权限体系设计的难题&#xff0c;即平台、平台的客户、客户的客户&#xff0c;乃至客户的客户的客户如何授权&#xff0c;这个可以通过“权限-角色-岗位”三级结构来实现。 但这个只是功能权限&am…

Apache安装与基本配置

1. 下载apache 地址&#xff1a;www.apache.org/download.cgi&#xff0c;选择“files for microsoft windows”→点击”ApacheHaus”→点击”Apache2.4 VC17”&#xff0c;选择x64/x86&#xff0c;点击右边download下面的图标。 2. 安装apache &#xff08;1&#xff09;把…