zoukankan      html  css  js  c++  java
  • 利用POI操作Excel实现百万数据写入

    POI 3.8以后提供了一个SXSSFWorkbook 类用于需要大量写入数据时使用,读取还是用XSSFWorkbook

     1 public static void main(String[] args) {
     2 //        XSSFWorkbook  普通写入和读取
     3 //        SXSSFWorkbook  超大量数据写入
     4         long time1 = System.currentTimeMillis();
     5         File file = new File("test.xlsx");
     6         if (file.exists()) {
     7             file.delete();
     8         }
     9         file.createNewFile();// 创建文件
    10         XSSFWorkbook wb1 = new XSSFWorkbook();
    11         FileOutputStream os = new FileOutputStream("test.xlsx");
    12         wb1.createSheet("test");// 创建第一张工作簿
    13         wb1.write(os);
    14         os.close();
    15         wb1.close();
    16         XSSFWorkbook wb2 = new XSSFWorkbook(new FileInputStream(file));
    17         SXSSFWorkbook swb = new SXSSFWorkbook(wb2, 100);
    18         SXSSFSheet sh = swb.getSheetAt(0);// 获取第一张工作簿
    19         for (int i = 0; i < 100000; i++) {
    20             if (i == 0) {// 添加表头
    21                 Row row = sh.createRow(i);
    22                 row.createCell(0).setCellValue("1");
    23                 row.createCell(1).setCellValue("2");
    24                 row.createCell(2).setCellValue("3");
    25                 row.createCell(3).setCellValue("4");
    26                 row.createCell(4).setCellValue("5");
    27                 row.createCell(5).setCellValue("6");
    28                 row.createCell(6).setCellValue("7");
    29                 row.createCell(7).setCellValue("8");
    30                 row.createCell(8).setCellValue("9");
    31                 row.createCell(9).setCellValue("10");
    32             } else {
    33                 Row row = sh.createRow(i);
    34                 row.createCell(0).setCellValue("测试");
    35                 row.createCell(1).setCellValue("测试");
    36                 row.createCell(2).setCellValue("测试");
    37                 row.createCell(3).setCellValue("测试");
    38                 row.createCell(4).setCellValue("测试");
    39                 row.createCell(5).setCellValue("测试");
    40                 row.createCell(6).setCellValue("测试");
    41                 row.createCell(7).setCellValue("测试");
    42                 row.createCell(8).setCellValue("测试");
    43                 row.createCell(9).setCellValue("测试");
    44             }
    45         }
    46         FileOutputStream os1 = new FileOutputStream(file);
    47         swb.write(os1);
    48         os1.close();
    49         swb.close();
    50         long time2 = System.currentTimeMillis();
    51         System.out.println((time2 - time1));
    52     }
  • 相关阅读:
    C++标准转换运算符(2)
    C++标准转换运算符(1)
    未能加载视图状态。正在向其中加载视图状态的控件树必须与前一请求期间用于……
    我的第一篇博客
    C语言C语言程序
    C语言基本运算符
    C语言流程控制
    C语言关键字、标识(zhi)符、注释
    msado15.dll版本引发的离奇故障
    mySQL错误: The used table type doesn't support FULLTEXT indexes
  • 原文地址:https://www.cnblogs.com/lingdu9527/p/10997801.html
Copyright © 2011-2022 走看看