Apache POI和excel操作
<!--添加依赖-->
<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
- 上一篇:js的模糊查询
- 下一篇:WebGPU学习(四):Alpha To Coverage