Apache POI的基本使用详解

目录
  • 基本介绍
  • 入门测试(从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!

    THE END
    喜欢就支持一下吧
    点赞9分享