zoukankan      html  css  js  c++  java
  • POI 导出大批量数据的Excel

    POI作为操作Excel的三方库应用广泛,本文着重讨论导出大批量数据的Excel的处理,版本为4.1.0:

            <dependency>
                <groupId>org.apache.poi</groupId>
                <artifactId>poi</artifactId>
                <version>4.1.0</version>
            </dependency>

    使用HSSFWorkbook进行导出,示例代码如下,代码中导出5万行20列的数据,相应时间见打印的情况:

    package com.test.poi;
    
    import java.io.FileOutputStream;
    import java.io.IOException;
    
    import org.apache.poi.hssf.usermodel.HSSFCell;
    import org.apache.poi.hssf.usermodel.HSSFRow;
    import org.apache.poi.hssf.usermodel.HSSFSheet;
    import org.apache.poi.hssf.usermodel.HSSFWorkbook;
    
    public class Demo {
    
        public static void main(String[] args) throws IOException {
            testHSSFWorkbook();
        }
    
        static void testHSSFWorkbook() throws IOException {
            long start = System.currentTimeMillis();
            HSSFWorkbook workbook = new HSSFWorkbook();
            HSSFSheet sheet = workbook.createSheet();
            HSSFRow row = sheet.createRow(0);
            for (int i = 0; i < 20; i++) {
                HSSFCell cell = row.createCell(i);
                cell.setCellValue("列" + i);
            }
            System.out.println("准备完表头时间:" + (System.currentTimeMillis() - start));
            for (int i = 0; i < 50000; i++) {
                HSSFRow rowInfo = sheet.createRow(i + 1);
                for (int j = 0; j < 20; j++) {
                    HSSFCell cellInfo = rowInfo.createCell(j);
                    cellInfo.setCellValue("列内容为" + j);
                }
            }
            System.out.println("准备完表内容时间:" + (System.currentTimeMillis() - start));
            FileOutputStream out = new FileOutputStream("D:\test.xlsx");
            workbook.write(out);
            out.close();
            System.out.println("输入完成时间:" + (System.currentTimeMillis() - start));
            System.out.println("finish");
        }
    
    }

    输出结果为:

    准备完表头时间:220
    准备完表内容时间:1730
    输入完成时间:4471
    finish

  • 相关阅读:
    一个统计代码行数的简单方法
    关于string的对象引用
    mysql连接的一些问题。
    linux环境初始化 用户问题
    php null o false ''
    php支付宝在线支付接口开发教程【转】
    模拟支付宝服务窗环境
    ctags
    校验全球电话号码 正确性 库 正则表达式
    php短路与 短路或
  • 原文地址:https://www.cnblogs.com/silenceshining/p/11681924.html
Copyright © 2011-2022 走看看