解决java poi导出excel2003不能超过65536行的问题
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。
解决java poi导出excel2003不能超过65536行的问题的更多相关文章
- 解决Java POI 导出Excel时文件名中文乱码,兼容浏览器
String agent = request.getHeader("USER-AGENT").toLowerCase(); response.setContentType(&quo ...
- 重构:以Java POI 导出EXCEL为例
重构 开头先抛出几个问题吧,这几个问题也是<重构:改善既有代码的设计>这本书第2章的问题. 什么是重构? 为什么要重构? 什么时候要重构? 接下来就从这几个问题出发,通过这几个问题来系统的 ...
- Java POI 导出EXCEL经典实现 Java导出Excel
转自http://blog.csdn.net/evangel_z/article/details/7332535 在web开发中,有一个经典的功能,就是数据的导入导出.特别是数据的导出,在生产管理或者 ...
- 解决Android单个dex文件不能超过65536个方法问题
当我们的项目代码过大时,编译运行时会报Unable to execute dex: method ID not in[0, 0xffff]: 65536)错误.当出现这个错误时说明你本身自己的工程代码 ...
- 重构:以Java POI 导出EXCEL为例2
前言 上一篇博文已经将一些对象抽象成成员变量以及将一些代码块提炼成函数.这一节将会继续重构原有的代码,将一些函数抽象成类,增加成员变量,将传入的参数合成类等等. 上一篇博文地址:http://www. ...
- java poi导出多sheet页
/** * @Title: exportExcel * @Description: 导出Excel的方法 * @param workbook * @param sheetNum (sheet的位置,0 ...
- 复杂的POI导出Excel表格(多行表头、合并单元格)
poi导出excel有两种方式: 第一种:从无到有的创建整个excel,通过HSSFWorkbook,HSSFSheet HSSFCell, 等对象一步一步的创建出工作簿,sheet,和单元格,并添加 ...
- Pandas 读取超过 65536 行的 Excel 文件
Excel 文件的格式曾经发生过一次变化,在 Excel 2007 以前,使用扩展名为 .xls 格式的文件,这种文件格式是一种特定的二进制格式,最多支持 65,536 行,256 列表格.从 Exc ...
- java:POI导出excel
POI是一个开源项目,专用于java平台上操作MS OFFICE,企业应用开发中可用它方便导出Excel. 下面是使用示例: 1.maven中先添加依赖项 <dependency> < ...
随机推荐
- SCTF2019 Crypto-warmup writeup
题外话 其实这道题在比赛过程中并没有解出来,思路完全想偏导致无解就放弃了,后来研究了大佬的writeup大半天才看懂... 正文 nc获取题目信息,返回一段明文和密文,要求输入一段明文和密文. 题目源 ...
- apache storm基本原理及使用总结
什么是Apache Storm Apache Storm是一个分布式实时大数据处理系统.Storm设计用于在容错和水平可扩展方法中处理大量数据.它是一个流数据框架,具有最高的摄取率.虽然Storm是无 ...
- Appium使用总结
目前在使用appium过程中遇到的一些问题及规避方法总结如下: Appium使用总结:1.在熄屏下启动测试,会自动唤醒屏幕2.Appium只针对单个应用测试3.使用unittest框架,该框架中每条用 ...
- 关于thymeleaf中th:if的使用
运用于判断表达式中时,关系判断使用 gt / ge / eq / lt / le / ne (即:使用缩写) gt: great than(大于)> ge: great equal(大于等于)& ...
- vscode 启动
code --user-data-dir /root/vscode code --user-data-dir /root/vscode
- vue-property-decorator和typescript结合构建的class类组件,父组件触发子组件方法的方式
vue-property-decorator和typescript结合构建的class类组件,父组件触发子组件方法的方式 class类组件示例 Father类组件 <template> & ...
- strlen函数 (求字符串长度函数)
strlen函数原型在<string.h>中 #include <stdio.h> #include <string.h> int main(){ char *p= ...
- PalletOne调色板Token PTN跨链转网的技术原理
之前一直在忙于通用跨链公链PalletOne的研发,没有怎么做技术分享的博客,最近PalletOne主网上线也有几个月的时间了,即将进行PTN(PalletOne上面的主Token)从ERC20到主网 ...
- Thinkphp <= 5.0.10 缓存getshell复现
目录 Thinkphp <= 5.0.10 缓存getshell复现 0x01 poc 0x02 跟踪源码 0x03 审计思路 0x04 补丁 0x05 参考 Thinkphp <= 5. ...
- Slickflow.NET 开源工作流引擎高级开发(六) -- WebTest 引擎接口模拟测试工具集
前言:引擎组件的接口测试不光是程序测试人员使用,而且也是产品负责人员需要用到的功能,因为在每一步流转过程中,就会完整模拟实际用户发生的场景,也就容易排查具体是程序问题还是业务问题,从而快速定位问题,及 ...