①、依赖包(poi版本要在3.8以上):
②、代码:
public static void main(String[] args) {
// TODO Auto-generated method stub
OutputStream os = null;
try {
//keep 100 rows in memory, exceeding rows will be flushed to disk
//在内存中保留100行,超过行将被刷新到磁盘
Workbook wb = new SXSSFWorkbook(100);
//创建工作表
Sheet sheet = wb.createSheet("用户数据");
//循环数据
for(int j = 0;j<1000001;j++) {
//创建行数
Row row = sheet.createRow(j);
//创建列
for(int i = 0;i<10;i++) {
Cell cell = row.createCell(i);
//赋值
cell.setCellValue(i);
}
}
//存放到本地
os = new FileOutputStream("e://test.xls");
wb.write(os);
//刷新缓存
os.flush();
System.out.println("处理完成");
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}finally {
if(os!=null) {
try {
os.close();
} catch (Exception e2) {
// TODO: handle exception
e2.printStackTrace();
}
}
}
}
经过测试,写入100w条数据大概是10s,不过这个只是测试的时间,还有一个问题:.xlsx后缀最多支持100w的数据,要是超过100万的话,比如300万,这就需要分页了,下次做个分页的例子试试。