使用Apache POI 创建和读取excel表

目录

1. Apache POI 中文使用手册

1.1 Apache POI 项目介绍

1.2 处理组件

1.2.1 Excel 文件处理组件

1.2.2 Word 文件处理组件

1.2.3 PPT 文件处理组件

1.2.4 文档属性组件

1.2.5 Visio 文件处理组件

1.2.6 Microsoft Publisher 98(-2007)文件处理组件

1.2.7 OutLook 文件处理组件

1.2.8 OutLook 附件文件处理组件

1.3 Apache POI 下载

1.3.1 直接下载

1.3.2 Maven依赖下载

1.4 使用Apache POI

1.4.1 使用Apache POI 读写Excel 文件

2、测试:创建excel表

读取excel表格


1. Apache POI 中文使用手册

1.1 Apache POI 项目介绍

  • Apache POI项目的任务是创建和维护Java API,以基于Office Open XML标准(OOXML)和Microsoft的OLE 2复合文档格式(OLE2)处理各种文件格式。

  • 简而言之,您可以使用Java读写MS Excel文件。

  • 此外,您可以使用Java读写MS Word和MS PowerPoint文件。

  • Apache POI是您的Java Excel解决方案(适用于Excel 97-2008)

  • Apache POI项目是用于基于Microsoft的OLE 2复合文档格式开发文件格式的纯Java端口的主项目

  • Apache POI还是用于基于Office Open XML(ooxml)开发文件格式的纯Java端口的主项目

简言之, Apache POI 是Java 领域中可以操作World,Excel,PPT文件的类库,可以用于生成报表,数据处理等.

值得注意的是,Apache POI 从4.0.1版本开始,需要JDK 8 或更高版本支持。

1.2 处理组件

1.2.1 Excel 文件处理组件

POIFS

HSSF

XSSF

SXSSF

OIFS是POI中最古老,最稳定的部分。OLE 2复合文档格式到纯Java的移植。

读写*.xls文件

读写*.xlsx 文件

读写*.xlsx 大文件

1.2.2 Word 文件处理组件

HWPF

XWPF

处理*.doc文件

处理*.docx 文件

1.2.3 PPT 文件处理组件

HSLF

XSLF

处理*.ppt文件

处理*.pptx 文件

1.2.4 文档属性组件
  • HPSF是OLE 2属性集格式到纯Java的移植。

  • 属性集通常用于存储文档的属性(标题,作者,最后修改日期等),但是它们也可以用于特定于应用程序的目的。

  • HPSF支持读取和写入属性。

1.2.5 Visio 文件处理组件

HDGF

XDGF

处理*.vsd 文件

处理*.vsdx文件

1.2.6 Microsoft Publisher 98(-2007)文件处理组件
  • HPBF是我们将Microsoft Publisher 98(-2007)文件格式移植到纯Java的端口。

  • 目前,它仅支持低水平读取大约一半的文件部分,并支持简单的文本提取

1.2.7 OutLook 文件处理组件
  • SMF是Microsoft Outlook消息文件格式到纯Java的移植。目前,它仅包含MSG文件的某些文本内容以及一些附件。进一步的支持和文档进展缓慢

  • Microsoft最近在其OSP中添加了Outlook文件格式

1.2.8 OutLook 附件文件处理组件
  • HMEF是Microsoft TNEF(传输中性编码格式)文件格式到纯Java的移植。Outlook有时会使用TNEF对消息进行编码,通常会以winmail.dat的形式出现。HMEF当前仅支持较低级别的阅读,但我们希望添加文本和附件提取。

  • 处理winmail.dat 格式文件

1.3 Apache POI 下载

依赖引用关系图如下所示:

1.3.1 直接下载

点击下载Apache POI

  • 二进制版本发布仓库: Index of /dist/poi/release/binicon-default.png?t=N7T8https://archive.apache.org/dist/poi/release/bin/

  • 源码版本发布仓库: Index of /dist/poi/release/srcicon-default.png?t=N7T8https://archive.apache.org/dist/poi/release/src/

1.3.2 Maven依赖下载
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi --> 
<dependency> 
<groupId>org.apache.poi</groupId> 
<artifactId>poi</artifactId> 
<version>5.0.0</version> 
</dependency> 
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml --> 
<dependency> 
<groupId>org.apache.poi</groupId> 
<artifactId>poi-ooxml</artifactId> 
<version>5.0.0</version> 
</dependency>
点击查看最新版

1.4 使用Apache POI

Apache POI 虽然支持很多种文档格式的读写,但是我们最常用的还是对Excel 文件的读写。

1.4.1 使用Apache POI 读写Excel 文件

正如前面所说,Apache POI 针对读写Excel 文件提供了三个组件:

HSSF

XSSF

SXSSF

HSSF是POI项目对Excel '97(-2007)文件格式的纯Java实现

XSSF是POI项目对Excel 2007 OOXML(.xlsx)文件格式的纯Java实现。

SXSSF是XSSF的API兼容流扩展,可用于必须生成非常大的电子表格且堆空间有限的情况

处理 *.xls 文件

处理 *.xlsx 文件

处理超大的 *xlsx 文件

  • 生成电子表格的另一种方法是通过Cocoon序列化器(但是您仍将间接使用HSSF)。使用Cocoon,您可以通过简单地应用样式表并指定序列化程序来序列化任何XML数据源(例如,可能是在SQL中输出的ESQL页面)。

  • 3.8-beta3 开始,POI提供了基于XSSF的低内存占用的SXSSF API。

  • SXSSF是XSSF的API兼容流扩展,可用于必须生成非常大的电子表格且堆空间有限的情况。SXSSF通过限制对滑动窗口内的行的访问来实现其低内存占用,而XSSF允许对文档中的所有行进行访问。不再存在于窗口中的较旧的行由于被写入磁盘而变得不可访问.

  • 在自动刷新模式下,可以指定访问窗口的大小,以在内存中保留一定数量的行。当达到该值时,创建额外的一行会导致索引最低的行从访问窗口中删除并写入磁盘。或者,可以将窗口大小设置为动态增长。可以根据需要通过显式调用flushRows(int keepRows)定期对其进行修剪。

  • 由于实现的流性质,与XSSF相比存在以下限制:

    • 在某个时间点只能访问有限数量的行。

    • 不支持 Sheet.clone()

    • 不支持公式评估

2、测试:创建excel表

/** Copyright (c) 2020, 2024, fpl1116.cn All rights reserved.**/
package cn.fpl;import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;/*** <p>Project: ICan_ParentWork - WriteExcelTest</p>* <p>Powered by fpl1116 On 2024-01-24 16:30:12</p>* <p>描述:<p>** @author penglei* @version 1.0* @since 1.8*/
public class WriteExcelTest {public static void main(String[] args) throws IOException {// 创建workbookHSSFWorkbook workbook = new HSSFWorkbook();// 	创建sheetHSSFSheet sheet = workbook.createSheet("元神");// 	创建rowHSSFRow row = sheet.createRow(0);// 	创建单元格并赋值row.createCell(0).setCellValue("姓名");row.createCell(1).setCellValue("年龄");for (int i = 1; i <=5 ; i++) {HSSFRow row1 = sheet.createRow(i);row1.createCell(0).setCellValue(i+"号角色");row1.createCell(1).setCellValue(18+i);}// 	输出excelworkbook.write(new FileOutputStream("D:\\Users\\penglei\\Desktop\\元神.xls"));}}

运行后则会在D:\\Users\\penglei\\Desktop\\元神.xls这个路径下产生一个元神.xls表格

读取excel表格

/** Copyright (c) 2020, 2024, fpl1116.cn All rights reserved.**/
package cn.fpl;/*** <p>Project: ICan_ParentWork - SS</p>* <p>Powered by fpl1116 On 2024-01-24 16:44:28</p>* <p>描述:<p>** @author penglei* @version 1.0* @since 1.8*/import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;import java.io.FileInputStream;
import java.io.IOException;public class ReadExcelTest {public static void main(String[] args) throws IOException {//获得workbootHSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream("D:\\Users\\penglei\\Desktop\\元神.xls"));//获得sheetHSSFSheet sheet = workbook.getSheet("元神");//获得rowfor (int i = 1; i < sheet.getLastRowNum(); i++) {HSSFRow row = sheet.getRow(i);//获得cell并取值String name = row.getCell(0).getStringCellValue();double age = row.getCell(1).getNumericCellValue();System.out.println(name+"-------------------"+age);}}
}

 运行后则会将表中的数据打印到控制台!!!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

kotlin data clas 数据类

data class 介绍 kotlin 中 data class 是一种持有数据的特殊类 编译器自动从主构造函数中声明的所有属性导出以下成员&#xff1a; .equals()/.hashCode() 对 .toString() 格式是 "User(nameJohn, age42)" .componentN() 函数 按声明顺序对应于所有属性。…

mac配置L2TP连接公司内网

1. 打开系统设置 2. 打开网络 3. 点击网络页面其他服务右下角三个点&#xff0c;添加VPN配置中的L2TP 4. 配置VPN&#xff0c;服务器填写公司的服务器ip&#xff0c;共享密钥没有可以随便填写 5. 打开终端编辑文件 sudo vim /etc/ppp/opt…

机电制造ERP软件有哪些品牌?哪家的机电制造ERP系统比较好

机电制造过程比较复杂&#xff0c;涵盖零配件、采购、图纸设计、工艺派工、生产计划、物料需求计划、委外加工等诸多环节。而供应链涉及供应商的选择、材料采购价格波动分析、材料交货、品质检验等过程&#xff0c;其中某个环节出现问题都可能会影响产品交期和经营效益。 近些…

在Vue的模块开发中使用GPT的体验及总结

我这一周都在忙着实现一个页面&#xff0c;这个页面是通过vue基于element-ui来实现的。在这个过程中&#xff0c;我把页面拆分成多个组件&#xff0c;而组件的生成是通过Chat-GPT3来实现的。 这又是一次使用AI来协同开发的体验&#xff0c;觉得有必要总结一下&#xff1a; 遵循…

概念抽取:构建认知基础的关键步骤

目录 前言1 概念抽取任务定义1.1 概念知识图谱的关系定义1.2 实体与概念的紧密关联1.3 多样的概念关系 2 概念在认知中的重要角色2.1 语言理解的基础2.2 上下位关系的深化理解 3 概念抽取方法3.1 基于模板的抽取3.2 基于百科的抽取3.3 基于机器学习的方法 4 应用4.1 自然语言理…

Java基础面试题-5day

泛型 什么是泛型&#xff1f;有什么用&#xff1f; 泛型是jdk5引入的新特性&#xff0c;通过泛型可以提高代码的可读性和稳定性&#xff1b;当我们使用泛型时&#xff0c;传入的对象类型必须是指定的泛型类型&#xff0c;否则就会报错 泛型的使用方式有哪些&#xff1f; 一…

【论文笔记】GPT,GPT-2,GPT-3

参考&#xff1a;GPT&#xff0c;GPT-2&#xff0c;GPT-3【论文精读】 GPT Transformer的解码器&#xff0c;仅已知"过去"&#xff0c;推导"未来" 论文地址&#xff1a;Improving Language Understanding by Generative Pre-Training 半监督学习&#xff1…

HPE ProLiant MicroServer Gen8更新固件

前几天因为没有shutdown OMV NAS便关了电源&#xff0c;导致其中一个硬盘损坏&#xff08;用DG检查有9个坏区&#xff09;&#xff0c;从而整个硬盘数据都没法读取&#xff0c;于是想着装个windows server会不会更好点&#xff0c;至少对windows熟悉点&#xff0c;硬盘扫描恢复…

postman参数提取+加密

目录 常见提取方式 1. json格式提取 2. 正则表达式提取 3. cookie提取-提取响应返回的cookie值 4. 请求头提取值--提取响应头所需要的值 加密 1. MD5加密 2. base64位加密 响应示例 {"code": 0,"data": {"pageListData": [{"creat…

代码随想录算法刷题训练营day16

代码随想录算法刷题训练营day16&#xff1a;LeetCode(104)二叉树的最大深度 、LeetCode(559)n叉树的最大深度、LeetCode(111)二叉树的最小深度、LeetCode(222)完全二叉树的节点个数 LeetCode(104)二叉树的最大深度 题目 代码 /*** Definition for a binary tree node.* publ…

springboot事务管理

/*spring事务管理注解:Transactional位置:业务(service)层的方法上、类上、接口上作用:将当前方法交给spring进行事务管理&#xff0c;方法执行前&#xff0c;开启事务:成功执行完毕&#xff0c;提交事务:出现常&#xff0c;回滚事务需要在配置文件是加上开启spring事务yml文件…

Linux常见指令汇总

目录 pwd√ ls√ cd√ 对文件的理解√ which√ alias√ touch√ linux系统目录结构√ mkdir / tree √ rmdir / rm √ man√ nano√ cp√ mv√ cat√ echo√ linux设计理念和三种重定向总结√ more/less√ head/tail√ wc√ uniq√ date / cal√ find√…

PHP伪协议使用姿势

php支持的伪协议 1 file:// — 访问本地文件系统 2 http:// — 访问 HTTP(s) 网址 3 ftp:// — 访问 FTP(s) URLs 4 php:// — 访问各个输入/输出流&#xff08;I/O streams&#xff09; 5 zlib:// — 压缩流 6 data:// — 数据&#xff08;RFC 2397&#xff09; 7 glob:// —…

为什么在使用类成员函数指针时,需要 Myclass::myfunc ,而不是直接 Myclass::myfunc

我们知道一个函数的函数名就是这个函数的地址&#xff0c;那么我们使用类成员函数的地址时&#xff0c;为什么还要在前面加上取地址符号& 原因如下&#xff1a; 成员函数指针类型是一种特殊的指针类型&#xff0c;用于指向类的成员函数。在 C 中&#xff0c;对于非静态成员…

我的软件测试内卷之路

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 现在的大环境下&#xff0c;各行各业都开始内卷起来&#xff0c;测试也不例外&#xff0c;企业要…

STM32 HAL库 SysTick->VAL和SysTick->LOAD 实现us延时

本文使用HAL库和STM32CubeMX配置时钟&#xff0c;使用 SysTick->LOAD 和 SysTick->VAL 来实现延时us和延时ms M3内核中&#xff0c;SysTick计数器是24位递减计数器 计数范围2^24-1 到 0 &#xff0c;然后重装载寄存器的值给SysTick计数器&#xff0c;重复下去 每来一个…

解释Go中常见的I/O模式

在这篇文章中&#xff0c;我想介绍一下常见的I/O&#xff08;输入和输出&#xff09;模式。我想在这篇文章中用浅显的语言澄清这些概念&#xff0c;这样人们就可以在他们的应用程序中使用优雅的Go I/O API。 让我们看看开发人员在日常生活中需要的常见用例。 写到标准输出 每…

npm install出错的各种情况

1.npm不再支持签名证书&#xff0c;npm install 走的是http协议&#xff0c;需要通过数字证书保证 解决方法&#xff1a; 解决方法&#xff1a;1、取消ssl验证&#xff1a;npm config set strict-ssl false 这个方法一般就可以解决了。 2、更换npm镜像源&#xff1a;npm confi…

分布式数据实现跨设备数据同步的N个秘密 | 分布式数据管理解析(二)

上期我们给大家带来分布式数据管理如何完成数据存储&#xff0c;数据同步&#xff0c;数据跨端访问&#xff0c;并保证整个过程中跨设备数据安全的解读。 这都得益于分布式数据管理平台抽象出的三大关键技术——分布式数据库&#xff0c;分布式文件系统和融合搜索。 那么这三…

IS-IS:10 ISIS路由渗透

ISIS的非骨干区域&#xff0c;无明细路由&#xff0c;容易导致次优路径问题。可以引入明细路由。 在IS-IS 网络中&#xff0c;所有的 level-2 和 level-1-2 路由器构成了一个连续的骨干区域。 level-1区域必须且只能与骨干区域相连&#xff0c;不同 level-1 区域之间不能直接…