java xssfworkbook_java使用poi(XSSFWorkbook)读取excel(.xlsx)文件

本文介绍了如何使用Apache POI库中的XSSFWorkbook类读取.xlsx文件。通过示例代码展示了创建工作簿、获取工作表、读取行和单元格数据的过程,详细解释了读取Excel文件的基本步骤。
摘要由CSDN通过智能技术生成

经过一番搜索发现,java操纵excel文件常用的有jxl和poi两种方式,孰好孰坏看自己需求而定。

其中最主要的区别在于jxl不支持.xlsx,而poi支持.xlsx

这里介绍的使用poi方式(XSSFWorkbook),实际上poi提供了HSSFWorkbook和XSSFWorkbook两个实现类。区别在于HSSFWorkbook是针对.xls文件,XSSFWorkbook是针对.xslx文件。

首先明确一下基本概念:

先创建一个工作簿,一个工作簿可以有多个工作表,一个工作表可以有多个行,一个行可以有多个单元格

工作簿 ----------->XSSFWorkbook

工作表 ----------->XSSFSheet

行        ----------->XSSFRow

单元格 ----------->XSSFCell

下图为创建的student.xlsx的内容:

457a2513d98f0e9ad80d6a7a01d1ba17.png

导入依赖:

org.apache.poi

poi

4.1.0

org.apache.poi

poi-ooxml

4.1.0

读取student.xlsx文件代码:

1 packagecom.zjk.testexcel;2

3 import org.apache.poi.xssf.usermodel.*;4 importjava.io.FileInputStream;5 importjava.io.IOException;6

7 /**

8 * @Auther: zjk9 * @Date: 2019/8/3010 * @Description:11 */

12 public classTestExcel1 {13 public static voidmain(String[] args) {14 try{15 //创建工作簿

16 XSSFWorkbook xssfWorkbook = new XSSFWorkbook(new FileInputStream("D:\\test-excel\\student.xlsx"));17 System.out.println("xssfWorkbook对象:" +xssfWorkbook);18 //读取第一个工作表(这里的下标与list一样的,从0开始取,之后的也是如此)

19 XSSFSheet sheet = xssfWorkbook.getSheetAt(0);20 System.out.println("sheet对象:" +sheet);21 //获取第一行的数据

22 XSSFRow row = sheet.getRow(0);23 System.out.println("row对象:" +row);24 //获取该行第一个单元格的数据

25 XSSFCell cell0 = row.getCell(0);26 System.out.println("cello对象:" +cell0);27 } catch(IOException e) {28 e.printStackTrace();29 }30 }31 }

控制台输出结果:可以发现具体到行对象时,就解析成xml文件了

xssfWorkbook对象:

Name: /xl/workbook.xml - Content Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml

sheet对象:

Name:/xl/worksheets/sheet1.xml - Content Type: application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml

row对象:  

0

1

2

3

cello对象:姓名

以上可以实现了读取某行某单元格的数据,那么接下来就该读取整个表的所有数据了:

packagecom.zjk.testexcel;importorg.apache.poi.xssf.usermodel.XSSFCell;importorg.apache.poi.xssf.usermodel.XSSFRow;importorg.apache.poi.xssf.usermodel.XSSFSheet;importorg.apache.poi.xssf.usermodel.XSSFWorkbook;importjava.io.FileInputStream;importjava.io.IOException;/*** @Auther: zjk

* @Date: 2019/8/30

* @Description:*/

public classTestExcel2 {public static voidmain(String[] args) {try{//创建工作簿

XSSFWorkbook xssfWorkbook = new XSSFWorkbook(new FileInputStream("D:\\test-excel\\student.xlsx"));

System.out.println("xssfWorkbook对象:" +xssfWorkbook);//读取第一个工作表

XSSFSheet sheet = xssfWorkbook.getSheetAt(0);

System.out.println("sheet对象:" +sheet);

//获取最后一行的num,即总行数。此处从0开始计数int maxRow =sheet.getLastRowNum();

System.out.println("总行数为:" +maxRow);for (int row = 0; row <= maxRow; row++) {//获取最后单元格num,即总单元格数 ***注意:此处从1开始计数***

int maxRol =sheet.getRow(row).getLastCellNum();

System.out.println("--------第" + row + "行的数据如下--------");for (int rol = 0; rol < maxRol; rol++){

System.out.print(sheet.getRow(row).getCell(rol)+ " ");

}

System.out.println();

}

}catch(IOException e) {

e.printStackTrace();

}

}

}

控制台输出:

xssfWorkbook对象:Name: /xl/workbook.xml - Content Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml

sheet对象:Name:/xl/worksheets/sheet1.xml - Content Type: application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml

总行数为:2

--------第0行的数据如下--------姓名 学号 班级 入学日期--------第1行的数据如下--------张三2.0190001E7 三班 01-八月-2019

--------第2行的数据如下--------李四2.0190002E7 三班 01-八月-2019

注意:2.0190001E7 = 2.0190001 * 107= 20190001

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用Apache POI库可以轻松地读取Excel文件。下面是一个使用XSSFWorkbook读取.xlsx文件的示例代码: ```java import java.io.File; import java.io.FileInputStream; import java.io.IOException; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.xssf.usermodel.XSSFWorkbook; public class ReadExcel { public static void main(String[] args) { try { // 读取文件 File file = new File("data.xlsx"); FileInputStream inputStream = new FileInputStream(file); // 创建工作簿对象 XSSFWorkbook workbook = new XSSFWorkbook(inputStream); // 获取第一个工作表 org.apache.poi.ss.usermodel.Sheet sheet = workbook.getSheetAt(0); // 循环读取每一行数据 for (Row row : sheet) { // 循环读取每一个单元格数据 for (Cell cell : row) { // 输出单元格内容 System.out.print(cell.toString() + "\t"); } System.out.println(); } // 关闭输入流 inputStream.close(); } catch (IOException e) { e.printStackTrace(); } } } ``` 这个程序将打开名为“data.xlsx”的文件,并将其读取XSSFWorkbook对象中。然后,它获取工作表中的第一个工作表,并使用循环遍历每一行和每一个单元格,输出单元格的内容。最后,它关闭输入流。 请注意,此示例代码需要添加Apache POI库的依赖项。您可以在Maven中添加以下依赖项: ```xml <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>4.1.2</version> </dependency> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值