java中POI写excel表的基础操作

介绍:Apache POI是Apache软件基金会的开放源码函式库,POl提供API给Java程序对Microsoft Office格式档案读和写的功能。

POI分为两个版本,分别是03版本xls和07版本xlsx,03版本最多支持65536行,07版本理论无限行。

先看下图,理解哪个是工作簿,哪个是工作表,哪个是行,哪个是单元格,只有这几个都理解了,后面代码创建才能很快入手。

步骤一:IDEA创建meavn工程空项目

步骤二:导入pom依赖,根据需要导入,我这里演示03版本和07版本,所以两个都导入了,还有一个测试类

步骤三:编写测试

首先创建工作簿,用到了Workbook对象,他是一个接口,有三个实现类,如下图:

03版本代码如下:

 //03版本
    @Test
    public void excel03() throws Exception {
        //1.创建工作簿,
        Workbook workbook = new HSSFWorkbook();
        //2.创建工作表
        Sheet sheet = workbook.createSheet("03版本");
        //3.创建行,0代表第一行
        Row row = sheet.createRow(0);
        //4.创建一个单元格
        Cell cell = row.createCell(0);
        //5.第一个单元格的内容
        cell.setCellValue("姓名:");
        //第一行的第二个单元格
        Cell cell1 = row.createCell(1);
        cell1.setCellValue("尼采");

        //创建第二行
        Row row2 = sheet.createRow(1);
        //第二行第一个单元格
        Cell cell21 = row2.createCell(0);
        cell21.setCellValue("性别:");
        //第二行第二个单元格
        Cell cell22 = row2.createCell(1);
        cell22.setCellValue("男");

        //定义一个表的存储路径
        String path="D:\\JAVA2020\\POI\\src\\main\\resources";
        //生成一张表(注意03版本后缀是xls)
        FileOutputStream fileOutputStream = new FileOutputStream(path+"03版本用户信息表.xls");
       //通过io流输出
        workbook.write(fileOutputStream);
        //记得关流
        fileOutputStream.close();
        System.out.println("写入成功");
    }

03版本输出效果:

07版本与03版本一样,只是对象不一样,换个对象,文件后缀名改为xlsx即可

07代码如下:

//07版本
    @Test
    public void excel07() throws Exception {
        //1.创建工作簿,
        Workbook workbook = new XSSFWorkbook();
        //2.创建工作表
        Sheet sheet = workbook.createSheet("07版本");
        //3.创建行,0代表第一行
        Row row = sheet.createRow(0);
        //4.创建一个单元格
        Cell cell = row.createCell(0);
        //5.第一个单元格的内容
        cell.setCellValue("姓名:");
        //第一行的第二个单元格
        Cell cell1 = row.createCell(1);
        cell1.setCellValue("尼采");

        //创建第二行
        Row row2 = sheet.createRow(1);
        //第二行第一个单元格
        Cell cell21 = row2.createCell(0);
        cell21.setCellValue("性别:");
        //第二行第二个单元格
        Cell cell22 = row2.createCell(1);
        cell22.setCellValue("男");

        //定义一个表的存储路径
        String path="D:\\JAVA2020\\POI\\src\\main\\resources";
        //生成一张表(注意03版本后缀是xls)
        FileOutputStream fileOutputStream = new FileOutputStream(path+"07版本用户信息表.xlsx");
        //通过io流输出
        workbook.write(fileOutputStream);
        //记得关流
        fileOutputStream.close();
        System.out.println("写入成功");
    }

07版本效果:

07加速版,换个对象,加个清楚临时文件的语句,其他不变

代码:

//07加速版
    @Test
    public void excel07BigData() throws Exception {
        //1.创建工作簿,
        Workbook workbook = new SXSSFWorkbook();
        //2.创建工作表
        Sheet sheet = workbook.createSheet("07加速版本");
        for (int rowNum = 0; rowNum < 1000; rowNum++) {
            //3.创建行
            Row row = sheet.createRow(rowNum);
            for (int i = 0; i < 10; i++) {
                //4.创建单元格
                Cell cell = row.createCell(i);
                //每个单元格数据
                cell.setCellValue(i);
            }

        }
        //定义一个表的存储路径
        String path="D:\\JAVA2020\\POI\\src\\main\\resources";
        //生成一张表(注意03版本后缀是xls)
        FileOutputStream fileOutputStream = new FileOutputStream(path+"07加速数字表.xlsx");
        //通过io流输出
        workbook.write(fileOutputStream);
        //记得关流
        fileOutputStream.close();
        //清除临时文件
        ((SXSSFWorkbook)workbook).dispose();
        System.out.println("写入成功");
    }

效果:

都很简单,只要明白两个版本区别,理解工作簿,工作表,行,单元格就可以很好写代码了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值