利用POI操作Excel实现百万数据写入

Posted lingdu9527

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了利用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     

 

以上是关于利用POI操作Excel实现百万数据写入的主要内容,如果未能解决你的问题,请参考以下文章

java 使用POI导出百万级数据

Java架构-Apache POI Excel

利用poi如何将条形码写入word中

java利用poi读取excel异常问题

用java的poi类读取一个excel表格的内容后再写入到一个新excel表格中的完整代码

使用POI导出Excel-利用模板