当前位置:首页 > Web开发 > 正文

Apache POI和excel操作

2024-03-31 Web开发


<!--添加依赖--> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.14</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.14</version> </dependency>

描述

POI结构:

HSSF - 提供读写Microsoft Excel XLS格式档案的功能

XSSF - 提供读写Microsoft Excel OOXML XLSX格式档案的功能

HWPF - 提供读写Microsoft Word DOC格式档案的功能

HSLF - 提供读写Microsoft PowerPoint格式档案的功能

HDGF - 提供读Microsoft Visio格式档案的功能

HPBF - 提供读Microsoft Publisher格式档案的功能

HSMF - 提供读Microsoft Outlook格式档案的功能

测试类

package com.study.test; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.junit.Test; import java.io.IOException; public class PoiTest01 { @Test public void test01() throws IOException { //1 创建工作簿对象 XSSFWorkbook workbook = new XSSFWorkbook("G:/hello.xlsx"); //2 获得工作表对象 XSSFSheet sheet = workbook.getSheetAt(0); //3 遍历工作表 获得行对象 for (Row row : sheet) { //4 遍历行对象 获得列对象 for (Cell cell : row) { //5 获得列里面的内容 System.out.println(cell.getStringCellValue()); } System.out.println("------------"); } //6.关闭 workbook.close(); } }

异常处理

java.lang.IllegalStateException: Cannot get a text value from a numeric cell

技术图片

输出结果:

张三
李四
------------
45
82
------------
89
23
------------

一、当我们遇到用“数字”表示的【文本型】内容时,怎么处理

方法一:在输入这串“数字”之前,先输入一个英文符号【‘】(也就是输入法为英文状态时,输入一个单引号)。

比如你需要输入一个信息“0023”,如果你不输入【’】,直接输入“0023”,回车后单元格内的信息将显示的是“23”。

方法二:先选择这个单元格或这部分单元格,鼠标右击选中部分,在弹出 的菜单中选【设置单元格格式】,再在弹出的窗口中依次选择【数字】-【文本】-【确定】,最后输入”0023“。

经过这样的操作,你会发现,在单元格的左上角会有一个”小的绿色的三角“符号,,表示”这个单元格里的内容被强制转换成了文本型内容“。

特别适用于:保存身份证号信息、保存0开头的数字信息。

POI操作Excel表格封装了几个核心对象:

XSSFWorkbook:工作簿     XSSFSheet:工作表       Row:行          Cell:单元格

上面案例是通过遍历工作表获得行,遍历行获得单元格,最终获取单元格中的值。

还有一种方式就是获取工作表最后一个行号,从而根据行号获得行对象,通过行获取最后一个单元格索引,从而根据单元格索引获取每行的一个单元格对象,代码如下

// 1.创建工作簿对象 XSSFWorkbook workbook = new XSSFWorkbook("G:/hello.xlsx"); // 2.获得工作表对象 XSSFSheet sheet = workbook.getSheetAt(0);// Excel默认有三个表对象 // 3.获得最后一行的行号 int lastRowNum = sheet.getLastRowNum(); // 4.遍历行 for(int i =0;i<=lastRowNum;i++){ XSSFRow row = sheet.getRow(i); // 5.获得最后一列的列号 short lastCellNum = row.getLastCellNum(); // 6.遍历列 for(int j = 0;j<lastCellNum;j++){ //7.取出数据 XSSFCell cell = row.getCell(j); System.out.println(cell.getStringCellValue()); } } // 8.关闭 workbook.close();

写数据进入表中

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/41176.html