Java读取Excel数据-基于Apache POI

一. POI是什么

Apache POI - the Java API for Microsoft Documents,顾名思义,Apache的第三方包,用来操作微软office文档,我们以excel来说明。

二、需要的jar包

  • 首先需要到Apache官网下载POI的库,下载链接地址:https://poi.apache.org/download.html
  • 进入我的百度网盘进行下载,下载链接:链接:https://pan.baidu.com/s/1hokZyOm4cztVtY4tb_6w5g
    提取码:9sfy
    下载解压后,得到下面文件:
    在这里插入图片描述
    把图中的jar文件导入到自己的项目中,就可以使用POI,用Java读Excel表格数据了。

> 注意:导入项目时,在项目中新创建以lib包用于存放jar包,将jar包导入后,进行如下操作,将jar包导入到项目中去
在这里插入图片描述

  • POI的组件列表中,针对excel的主要是HSSF和XSSF组件,前者针对97-2007的通用版excel,即后缀xls;后者针对2007或更高版的excel,即后缀xlsx。官方概要如下:
HSSF is the POI Project's pure Java implementation of the Excel '97(-2007) file format.
XSSF is the POI Project's pure Java implementation of the Excel 2007 OOXML (.xlsx) file format.

三.POI核心类

3.1 工具簿WorkBook

创建或维护Excel工作簿的所有类的超接口,Workbook,属于org.apache.poi.ss.usermodel包。其下有两个实现类:

  • HSSFWorkbook : 有读取.xls 格式和写入Microsoft Excel文件的方法。它与微软Office97-2003版本兼容
  • XSSFWorkbook : 有读写Microsoft Excel和OpenOffice的XML文件的格式.xls或.xlsx的方法。它与MS-Office版本2007或更高版本兼容

所以在针对不同版本的excel时,需要对应以上使用不同的Workbook。构造函数中,常用的:

  • HSSFWorkbook
//直接创建新的
HSSFWorkbook()

//通过输入流创建
HSSFWorkbook(java.io.InputStream s)
  • XSSFWorkbook
//直接创建新的
HSSFWorkbook()

//通过输入流创建
HSSFWorkbook(java.
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Apache POI 是一个用于读写 Microsoft Office 格式文件(如 Excel、Word、PowerPoint 等)的 Java 。下面是使用 Apache POI 读取 Excel 表格数据的步骤: 1. 添加 Apache POI 依赖包。 在项目的 pom.xml 文件中添加以下依赖: ```xml <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>4.1.2</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>4.1.2</version> </dependency> ``` 2. 创建 Workbook 对象。 使用 FileInputStream 类加载 Excel 文件,然后创建 Workbook 对象。Workbook 对象可以是 HSSFWorkbook(处理 .xls 格式)或 XSSFWorkbook(处理 .xlsx 格式)。 ```java FileInputStream file = new FileInputStream(new File("path/to/excel/file.xlsx")); XSSFWorkbook workbook = new XSSFWorkbook(file); ``` 3. 获取 Sheet 对象。 Sheet 对象代表一个 Excel 表格,可以通过 Workbook 对象的 getSheet() 方法获取。也可以通过 Sheet 对象的名字获取,如 getSheet("Sheet1")。 ```java Sheet sheet = workbook.getSheetAt(0); // 获取第一个表格 ``` 4. 遍历行和单元格。 遍历行和单元格,读取数据。 ```java Iterator<Row> rowIterator = sheet.iterator(); while (rowIterator.hasNext()) { Row row = rowIterator.next(); Iterator<Cell> cellIterator = row.iterator(); while (cellIterator.hasNext()) { Cell cell = cellIterator.next(); switch (cell.getCellType()) { case STRING: System.out.print(cell.getStringCellValue() + "\t"); break; case NUMERIC: System.out.print(cell.getNumericCellValue() + "\t"); break; case BOOLEAN: System.out.print(cell.getBooleanCellValue() + "\t"); break; default: } } System.out.println(); } ``` 完整代码示例: ```java import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.util.Iterator; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; public class ReadExcel { public static void main(String[] args) throws IOException { FileInputStream file = new FileInputStream(new File("path/to/excel/file.xlsx")); XSSFWorkbook workbook = new XSSFWorkbook(file); Sheet sheet = workbook.getSheetAt(0); Iterator<Row> rowIterator = sheet.iterator(); while (rowIterator.hasNext()) { Row row = rowIterator.next(); Iterator<Cell> cellIterator = row.iterator(); while (cellIterator.hasNext()) { Cell cell = cellIterator.next(); switch (cell.getCellType()) { case STRING: System.out.print(cell.getStringCellValue() + "\t"); break; case NUMERIC: System.out.print(cell.getNumericCellValue() + "\t"); break; case BOOLEAN: System.out.print(cell.getBooleanCellValue() + "\t"); break; default: } } System.out.println(); } workbook.close(); file.close(); } } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值