Java-POI组件
一、简介
1.poi属于Apache产品,具体使用请参考官网地址:http://poi.apache.org/。
2.Apache poi 是java编写、免费开源、跨平台java api。
3.poi英文全拼Poor Obfuscation Implementation,翻译为“可怜的模糊实现”。
4.Apache poi 提供api给java对Microsoft Office格式文档读写的功能。
二、Excel文件处理
Java的组件POI是轻量级的自动化处理Microsoft Office格式文件的组件。
POI中对Excel操作常用的两个类分别是
1 | HSSFWorkbook Hw = new HSSFWorkbook(); |
以上两个对象的区别就是随着Excel的发展来划分的,众所周知Excel有代表性的版本分别是03版本和07版本,这两个版本最显著的区别就是03版本所容纳的数据行只有65536行,而07版本则是可以容纳无限数据的。
以上各两个对象也是为了兼容新版和旧版Excel来划分的,HSSFWorkbook适用于旧版,XSSFWorkbook适用于新版。在使用过程中没有区别,只是对象名称不同。
Maven中的POI依赖
1 | <!-- 03版本的POI依赖--> |
POI写操作
这个操作过程可以使用流水账来形容,顺滑的逻辑思想,下面来简单的过一遍吧
创建对Excel的操作对象,工作簿
1
Workbook Work = new XSSFWorkbook(); //面向接口编程,对象变了,接口不变
创建工作表
有了工作簿之后,使用工作簿对象创建工作表
1
Sheet sheet = Work.createSheet();
创建第一行数据
使用上面的工作表对象,调用创建数据行方法
方法内的参数就是Excel中的行数,索引为0,表示常规工作表中的第一行
1
Row row = sheet.createRow(0);
创建第一列数据
使用上面的第一行对象,调用创建第一列数据的方法
方法内的参数为0,就表示创建了第一行中的第一列的数据
1
Cell cell = row.createCell(0);
执行完上述操作之后,就相当于选中了一个工作表中的第一行中的第一列数据,接下来就可以往当前选中的单元格填充数据了!
填充字符串格式的数据
1
cell.setCellValue("卡特琳娜")
之后就可将,创建的Excel表输出到本地来查看我们的执行结果啦
输出Excel文档
1
2
3
4//FileOutputStream中参数就是当前本地输出的地址
FileOutputStream fileOutputStream = new FileOutputStream(PATH+"mmd.xlsx");
//调用work工作簿对象,就可以将文件输出到本地
Work.write(fileOutputStream);
POI读操作
既然要读取本地的Excel文件,那么就要存在本地文件并且创建文件的输入流
创建本地文件输入流,并转交给工作簿操作对象
1
2
3
4
5//创建文件的数据流
FileInputStream file = new FileInputStream(PATH + "07.xlsx");
//将文件流引入POI操作对象
Workbook Work = new XSSFWorkbook(file);获取工作表
现在已经有了工作簿的操作对象,现在我们就要选择工作簿中具体的工作表来进行下一步操作,这里介绍两种方法。
1
2Sheet sheet1 = Work.getSheetAt(0); //根据索引选择第一张工作表
Sheet sheet2 = Work.getSheet("one"); //根据工作表的名称选择工作表获取第一行
将指针定位到第一行
1
Row row = sheet1.getRow(0); //获取第一行
获取具体的单元格
使用定位到上一行的对象,定位具体的第N列数据
1
Cell cell = row.getCell(0); //获取第一行中第一列的数据
获取单元格数据
1
cell.getStringCellValue() //获取String的值
以工作表对象为基点,获取工作表中有效行的总行数(自动化读取数据的时候使用)
1
2//获取工作表中可用的数据总行数,说白了就是有多少有效数据行,就返回多大的数字
int Lines = sheet.getPhysicalNumberOfRows();以行对象为基点,获取行单位下有效列的总列数
1
2//这个跟上面内个方法没啥大区别,这个是获取当前选中行中有效的数据列数
int Cells = line.getPhysicalNumberOfCells();到这里其实已经掌握了怎样从Excel中读数据和写数据,其实向Excel中写数据好说,读数据这里有一个很显著的坑,那就是你永远不知道你选择的单元格中的数据类型是啥,所以上面演示的读数据是读出来的String类型的数据。
接下来就补充一下在读数据的时候,为了应对各种情况进行的安全性判断吧。
1 | /* |
实例演示
个人演示的实例,贴在这里,需要者自取,已经封装为工具类,可以直接使用!!!
1 | /** |
- 本文作者:
腾飞
- 本文链接:
https://www.tengfei.eu.org/article/a7173982.html
- 版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!