利用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     }

原文地址:https://www.cnblogs.com/lingdu9527/p/10997801.html

时间: 2024-08-10 20:09:05

利用POI操作Excel实现百万数据写入的相关文章

【web开发】☆★之利用POI操作Excel表格系列教程【8】设置单元格对其方式

[web开发]☆★之利用POI操作Excel表格系列教程[8]设置单元格对其方式 package csg.xiaoye.poidemo; import java.io.FileOutputStream; import org.apache.poi.hssf.usermodel.HSSFCellStyle; import org.apache.poi.hssf.usermodel.HSSFRichTextString; import org.apache.poi.hssf.usermodel.HS

【web开发】☆★之利用POI操作Excel表格系列教程【9】单元格边框处理

[web开发]☆★之利用POI操作Excel表格系列教程[9]单元格边框处理 package csg.xiaoye.poidemo; import java.io.FileOutputStream; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellStyle; import org.a

【web开发】☆★之利用POI操作Excel表格系列教程【10】单元格填充色和颜色操作

[web开发]☆★之利用POI操作Excel表格系列教程[10]单元格填充色和颜色操作 package csg.xiaoye.poidemo; import java.io.FileOutputStream; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellStyle; import

【web开发】☆★之利用POI操作Excel表格系列教程【11】单元格合并

[web开发]☆★之利用POI操作Excel表格系列教程[11]单元格合并 package csg.xiaoye.poidemo; import java.io.FileOutputStream; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import org.apache.p

java使用POI操作excel文件,实现批量导出,和导入

一.POI的定义 JAVA中操作Excel的有两种比较主流的工具包: JXL 和 POI .jxl 只能操作Excel 95, 97, 2000也即以.xls为后缀的excel.而poi可以操作Excel 95及以后的版本,即可操作后缀为 .xls 和 .xlsx两种格式的excel. POI全称 Poor Obfuscation Implementation,直译为"可怜的模糊实现",利用POI接口可以通过JAVA操作Microsoft office 套件工具的读写功能.官网:htt

POI操作Excel详解,HSSF和XSSF两种方式

HSSF方式: package com.tools.poi.lesson1; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.text.ParseException; import java.text.SimpleDateFormat; import java.

POI操作EXCEL之导出Excel(设置有效性,下拉列表引用)

本人使用的是poi-bin-3.10-FINAL-20140208.zip 版本的poi以下是程序关键代码: //需要引用的类 import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.ArrayList; import ja

第七周作业 POI操作Excel,world文档

先来说说jxl与poi的区别. 相同点都是操作EXcel的工具,但jxl不常用原因有:jxl没有人维护,操作excel效力低下,只支持03及其以前的版本的excel,对图片的支持不完整. 同poi比较而言,poi效率高功能强大,支持xlsx,xls即支持所有的版本.而且操作大数据效率比较高,因为他对大数据的操作做了相应的优化. 下面来个简单地实现:poi操作Excel的功能 简单的单元测试类:实现的功能是向excel文件中写入数据 1 @Test 2 public void test1() th

POI操作Excel异常Cannot get a text value from a numeric cell

控制台抛出异常:java.lang.IllegalStateException: Cannot get a text value from a numeric cell 在java中用POI解析excel文件时出现以上报错,表示无法从一个数值类型的单元格获得文本类型的值. POI操作Excel时数据Cell有不同的类型,当我们试图从一个数字类型的Cell读取出一个字符串并写入数据库时,就会出现Cannot get a text value from a numeric cell的异常错误. 解决