java poi在导出数据到excel2003工作表中时一个工作表只能存储65536行数据,如果超过这个数据就会失败,excel2007并没有这个问题,但是为了兼容性我们通常都是导出到2003版本上的。

1、导出成xlsx格式。

2、达到某个数值就再创建一张工作表。

    /**
* 如果达到50000条数据则重新创建工作表的逻辑
*/
@Override
public void exportExcel(List<HolidayItemForm> formList, ServletOutputStream outputStream){
try {
//工作表名后面的数字,如表1,表2
int i = 0;
//记录总行数
int rownum = 0;
//记录每个sheet的行数
int tempnum = 0;
//分页条数达到此条数则创建工作表
int page = 5;
//创建工作薄
HSSFWorkbook workbook = new HSSFWorkbook();
//创建列标题栏样式
HSSFCellStyle cellStyle = ExcelUtils.createCellStyle(workbook, (short)10);
while(true){
//创建工作表并应用上面的样式
HSSFSheet sheet = ExcelUtils.createWorkbook(workbook,cellStyle,++i);
rownum++;
//将数据库中的数据列表写入excel中
if(formList != null){
tempnum = 0;
for (int j=rownum-i; j<formList.size(); j++) {
//进入第2个sheet写出的行数从第2条数据开始(++tempnum等于1,因为标题行占了1行)
HSSFRow row2 = sheet.createRow(++tempnum);
rownum++;
row2.createCell(0).setCellValue(formList.get(j).getUserId());
row2.createCell(1).setCellValue(formList.get(j).getUserName());
row2.createCell(2).setCellValue(formList.get(j).getDeptName());
row2.createCell(3).setCellValue(formList.get(j).getUserJob());
row2.createCell(4).setCellValue(formList.get(j).getTypeName());
row2.createCell(5).setCellValue(formList.get(j).getBeginDate());
row2.createCell(6).setCellValue(formList.get(j).getEndDate());
row2.createCell(7).setCellValue(formList.get(j).getHolidayHour());
row2.createCell(8).setCellValue(formList.get(j).getCreateDate());
//达到5条退出并创建另外一个sheet
if(rownum%page == 0){
break;
}
}
}
//如果记录的行数等于集合的总行数则退出
if((rownum-i) == formList.size()){
break;
}
}
//输出
workbook.write(outputStream);
workbook.close();
} catch (IOException e) {
e.printStackTrace();
}
}

参考:https://blog.csdn.net/wjycgl/article/details/53942818

最新文章

  1. Percona TokuDB
  2. Django之路由、模板和模型系统
  3. 关于NS2安装的若干问题
  4. asp.net 网站 或者web Api 发布
  5. [Coursera]Machine Learning
  6. Linux C 文件与目录2 文件的打开与关闭
  7. ubuntu 12.10无法用apt-get安装软件 Err http://us.archive.ubuntu.com quantal-updates/main Sources 404 Not
  8. UINavigationController切换视图的简单使用
  9. Arrays 类操作 Java 的数组排序
  10. 使用SeaJS实现模块化JavaScript开发(新)
  11. python之 sys.exit() os._exit() exit() quit()的简单使用
  12. 《你不知道的JavaScript》整理(六)——强制类型转换
  13. jQ层级选择器
  14. js和android及ios交互
  15. 插值查找C++
  16. 【原创】Linux基础之SSH隧道/端口转发
  17. kubernetes 编排详解 挂载
  18. 题解 SP26045 【GCDMAT2 - GCD OF MATRIX (hard)】
  19. 利用StopWatch类监控Java代码执行时间并分析性能
  20. BZOJ3697采药人的路径——点分治

热门文章

  1. Django使用MySQL数据库的流程
  2. selenium-server-standalone下载网站
  3. 洛谷 UVA10226 Hardwood Species
  4. Office批量打印助手(Excel 批量打印、Word 批量打印)
  5. jquery 获取元素(父节点,子节点,兄弟节点)
  6. C++如何使用宏定义来简化代码性能测试 | cpp macro like function to implement a performance profiler
  7. Python三级菜单作业实现
  8. 被忽略的CSS规则
  9. Java题库——Chapter2 基础程序设计
  10. python文件夹遍历,文件操作,获取文件修改创建时间