目录
- 基本介绍
- 入门测试(从excel文件读取数据)
- 第一步:导入maven坐标
- 第二步:创建excel文件
- 第三步:写测试代码
- 代码说明及扩展
- 入门测试(向excel文件写入数据)
基本介绍
poi
- pache poi是用java编写的免费开源的跨平台的java api,apache poi提供api给java程序对microsoft office格式档案读和写的功能,
- 使用最多的就是使用poi操作excel文件。
- 它还能操作word等这些其他形式的文档
jxl:专门操作excel,专门用来操作excel的
使用poi,需要导入maven坐标
<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格式档案的功能
入门测试(从excel文件读取数据)
使用poi可以从一个已经存在的excel文件中读取数据
第一步:导入maven坐标
下面是第二步
第二步:创建excel文件
第三步:写测试代码
package com.yy.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.file; import java.io.fileinputstream; /** * @author marston * @date 2021/10/29 */ public class poitest { @test public void test() throws exception { //传入一个输入流,加载指定文件,创建一个excel对象(工作簿) xssfworkbook excel = new xssfworkbook(new fileinputstream(new file("e:\\testnomal\\poi.xlsx"))); //读取excel文件中的第一个sheet标签页 xssfsheet sheet = excel.getsheetat(0); //一个sheet页里面有很多行,遍历这个sheet标签页,获取每一行数据 for (row row : sheet) { //遍历行,获得每个单元格对象 for (cell cell : row) { //cell代表单元格对象 system.out.println(cell.getstringcellvalue());//getstringcellvalue第二列因为是数值,不能转为string类型的所以报错 //只要将excel表格里面的第二列的内容改为string类型的就可以了 } } //关闭excel文件 excel.close(); } }
运行结果:
因为是入门案例,我这里就要类型改变为下面的,将excel文件里面的内容修改后:
代码说明及扩展
通过上面的入门案例可以看到,poi操作excel表格封装了几个核心对象:
xssfworkbook:工作簿
xssfsheet:工作表
row:行
cell:单元格
上面案例是通过遍历工作表获得行,遍历行获得单元格,最终获取单元格中的值。
还有一种方式就是获取工作表最后一个行号,从而根据行号获得行对象,通过行获取最后一个单元格索引,从而根据单元格索引获取每行的一个单元格对象,代码如下:
package com.yy.test; import org.apache.poi.ss.usermodel.cell; import org.apache.poi.ss.usermodel.row; import org.apache.poi.xssf.usermodel.xssfrow; import org.apache.poi.xssf.usermodel.xssfsheet; import org.apache.poi.xssf.usermodel.xssfworkbook; import org.junit.test; import java.io.file; import java.io.fileinputstream; /** * @author marston * @date 2021/10/29 */ public class poitest { @test public void test2() throws exception { //传入一个输入流,加载指定文件,创建一个excel对象(工作簿) xssfworkbook excel = new xssfworkbook(new fileinputstream(new file("e:\\testnomal\\poi.xlsx"))); //读取excel文件中的第一个sheet标签页 xssfsheet sheet = excel.getsheetat(0); //获取当前工作表最后一行的行号,行号从0开始 int lastrownum = sheet.getlastrownum(); system.out.println("lastrownum:"+lastrownum); for(int i=0;i<=lastrownum;i++){ //根据行号获取每一行 xssfrow row = sheet.getrow(i); //获取当前行最后一个单元格索引 short lastcellnum = row.getlastcellnum(); system.out.println("lastcellnum:"+lastcellnum); for(short j=0;j<lastcellnum;j++){ //根据单元格索引获取单元格内容 string value = row.getcell(j).getstringcellvalue(); system.out.println(value); } } //关闭excel文件 excel.close(); } }
入门测试(向excel文件写入数据)
测试代码:
//使用poi向excel文件写入数据,并且通过输出流将创建的excel文件保存到本地磁盘 //@test public void test3() throws exception{ //在内存中创建一个excel文件(工作簿) xssfworkbook excel = new xssfworkbook(); //创建一个工作表对象,名字叫做:poi写入测试 xssfsheet sheet = excel.createsheet("poi写入测试"); //在工作表中创建行对象,在第一行创建 xssfrow title = sheet.createrow(0); //在行中创建单元格对象 title.createcell(0).setcellvalue("姓名");//第一列内容 title.createcell(1).setcellvalue("地址"); title.createcell(2).setcellvalue("年龄"); //在第二行创建 xssfrow datarow = sheet.createrow(1); datarow.createcell(0).setcellvalue("小明"); datarow.createcell(1).setcellvalue("北京"); datarow.createcell(2).setcellvalue("20"); //创建一个输出流,通过输出流将内存中的excel文件写到磁盘 fileoutputstream out = new fileoutputstream(new file("e:\\hello.xlsx")); excel.write(out);//写入 out.flush();//刷新 excel.close(); }
到此这篇关于apache poi的基本使用的文章就介绍到这了,更多相关apache poi使用内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!