当前位置:   article > 正文

Java使用poi/easyexcel操作excel_excelpoi 4.12 exportbigexcel

excelpoi 4.12 exportbigexcel

前言

在工作的开发过过程中,我们总会遇到将数据导出到excel的需求,和导入excel到数据库,下面会讲解当今比较流行的两个工具实现Java操作excel:

  1. Apache POI
  2. 阿里巴巴的easyexcel

POI介绍

使用poi会相对比较原生,相较于easyExcel比较复杂(easyExcel读写的时候可以做到一行代码就可以搞定,相当优雅)
在这里插入图片描述
针对上图的基本功能的 1 ,2,workbook的实现类有三个接口。其中SXSSFWorkbook操作excel07版XSSF的升级,速度比XSSF更快。具体下面有写。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

POI实战-写的操作:

都入相关依赖

<!--xls 03-->
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>3.9</version>
</dependency>

<!--xlsx 07版本-->
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>3.9</version>
</dependency>

<!--      测试依赖-->
<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
</dependency>

03版本写excel

@Test
public void writeExcel03() throws IOException {
   
    String path = "E:\\excel\\";
    //创建一个工作簿
    Workbook workbook = new HSSFWorkbook();
    //创建一个工作表
    Sheet sheet = workbook.createSheet("sheet01");
    //创建行
    Row row01 = sheet.createRow(0);//行从0开始,第一行
    //创建一个单元格
    Cell cell01 = row01.createCell(0);//列也是从0开始
    //设置单元格中的内容
    cell01.setCellValue("码农");

    Cell cell02 = row01.createCell(1);
    cell02.setCellValue("IT民工");

    FileOutputStream outputStream = new FileOutputStream(path + "码农.xls");
    //工作簿通过流写出
    workbook.write(outputStream);
    outputStream.close();

    System.out.println(">>>>>>>>excel 03 write finish");
}

07版本:跟03版本基本一样,只是工作簿的对象不同(03-HSSFWorkbook;07-XSSFWorkbook),和文件后缀的不同

@Test
public void writeExcel07() throws IOException {
   
    String path = "E:\\excel\\";
    //创建一个工作簿
    Workbook workbook = new XSSFWorkbook();
    //创建一个工作表
    Sheet sheet = workbook.createSheet("sheet01");
    //创建行
    Row row01 = sheet.createRow(0);//行从0开始,第一行
    //创建一个单元格
    Cell cell01 = row01.createCell(0);//列也是从0开始
    //设置单元格中的内容
    cell01.setCellValue("码农");

    Cell cell02 = row01.createCell(1);
    cell02.setCellValue("IT民工");

    FileOutputStream outputStream = new FileOutputStream(path + "07码农.xlsx");
    //工作簿通过流写出
    workbook.write(outputStream);
    outputStream.close();

    System.out.println(">>>>>>>>excel 07 write finish");
}

运行之后的效果图
在这里插入图片描述

大文件的写入

在这里插入图片描述

大文件写HSSF

下面例子用时 2秒

@Test
public void bigDatawriteExcel03() throws IOException {
   
    String path = "E:\\excel\\";
    long beginTime = System.currentTimeMillis();
    //创建一个工作簿
    Workbook workbook = new HSSFWorkbook();
    //创建一个工作表
    Sheet sheet = workbook.createSheet("sheet01");
    //创建行
    for (int i = 0; i< 65536; i ++) {
   
        Row row = sheet.createRow(i);
        for (int j = 0 ; j < 10; j++) {
   
            Cell cell = row.createCell(j);
            cell.setCellValue(j);
        }
    }

    FileOutputStream outputStream = new FileOutputStream(path + "bigData03码农.xls");
    //工作簿通过流写出
    workbook.write(outputStream);
    outputStream.close();
    long endTime = System.currentTimeMillis();


    System.out.println("用时" + ((endTime-beginTime) / 1000) + " 秒" );
}
大文件写XSSF

下面例子用时 7秒.
虽然它比03的用时长,但是它比03可以写更多的数据,比如超过6553行的数据都可以,而03的超过6553行就会报错

@Test
public void bigDatawriteExcel07() throws IOException {
   
    String path = "E:\\excel\\";
    long beginTime = System.currentTimeMillis();
    //创建一个工作簿
    Workbook workbook = new XSSFWorkbook();
    //创建一个工作表
    Sheet sheet = workbook.createSheet("sheet01");
    //创建行
    for (int i = 0; i< 65536; i ++) {
   
        Row row = sheet.createRow(i);
        for (int j = 0 ; j < 10; j++) {
   
            Cell cell = row.createCell(j);
            cell.setCellValue(j);
        }
    }

    FileOutputStream outputStream = new FileOutputStream(path + "bigData07码农.xlsx");
    //工作簿通过流写出
    workbook.write(outputStream);
    outputStream.close();
    long endTime = System.currentTimeMillis();


    System.out.println("用时" + ((endTime-beginTime) / 1000) + " 秒" );
}
大文件写SXSSF

在这里插入图片描述
此例子用SXSSF用时1.5秒

@Test
public void bigDatawriteExcelS07() throws IOException {
   
    String path = "E:\\excel\\";
    long beginTime = System.currentTimeMillis();
    //创建一个工作簿
    Workbook workbook = new SXSSFWorkbook();
    //创建一个工作表
    Sheet sheet = workbook.createSheet("sheet01");
    //创建行
    for (int i = 0; i< 65536; i ++) {
   
        Row row = sheet.createRow(i);
        for (
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/天景科技苑/article/detail/1022298
推荐阅读
相关标签
  

闽ICP备14008679号