概述
java导出excel,超60000行进入下一sheet
由于老版本poi对Excel的行数有限制为65536行,所以将其数据做成多个sheet导出
public static void creatExcel(List<MMap> maps, String filePath) {
// 第一步,创建一个webbook,对应一个Excel文件
HSSFWorkbook wb = new HSSFWorkbook();
for (MMap map : maps) {
List<String> titleList = (List<String>) map.getObj();
List<List<String>> values = (List<List<String>>) map.getObj1();
int sheetSize = 60000;// 限制一个sheet,最多60000行数据
int sheetNum = values.size() / sheetSize + 1;// 得到一共几个sheet
for (int j = 1; j <= sheetNum; j++) {// j表示第几个sheet
int size = sheetSize;
if (j == sheetNum) {
size = values.size() % sheetSize;
}
String sheetTitle = (String) map.getObj2();
// 第二步,在webbook中添加一个sheet,对应Excel文件中的sheet
HSSFSheet sheet = wb.createSheet(sheetTitle + j);
sheet.setDefaultColumnWidth(20);
// 第三步,在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制short
HSSFRow row = sheet.createRow((int) 0);
// 第四步,创建单元格,并设置值表头 设置表头居中
HSSFCellStyle style = wb.createCellStyle();
style.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 创建一个居中格式
if (titleList != null && titleList.size() > 0) {
// 标题
for (int i = 0; i < titleList.size(); i++) {
HSSFCell cell = row.createCell(i);
cell.setCellValue(titleList.get(i));
cell.setCellStyle(style);
}
}
// 值
if (values != null && values.size() > 0) {
for (int i = 0; i < size; i++) {
row = sheet.createRow((int) i + 1);
List<String> value = values.get(i+(j-1)*sheetSize);
for (int k = 0; k < value.size(); k++) {
HSSFCell cell = row.createCell(k);
cell.setCellValue(value.get(k));
cell.setCellStyle(style);
}
}
}
}
}
// 第六步,将文件存到指定位置
try {
FileOutputStream fout = new FileOutputStream(filePath);
wb.write(fout);
fout.close();
} catch (Exception e) {
e.printStackTrace();
}
}
/****************************一般方法*****有限制为65536行*******************/
public static void creatExcel_old(List<MMap> maps,String filePath){
// 第一步,创建一个webbook,对应一个Excel文件
HSSFWorkbook wb = new HSSFWorkbook();
for (MMap map : maps) {
List<String> titleList = (List<String>) map.getObj();
List<List<String>> values = (List<List<String>>) map.getObj1();
String sheetTitle = (String) map.getObj2();
// 第二步,在webbook中添加一个sheet,对应Excel文件中的sheet
HSSFSheet sheet = wb.createSheet(sheetTitle);
sheet.setDefaultColumnWidth(20);
// 第三步,在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制short
HSSFRow row = sheet.createRow((int) 0);
// 第四步,创建单元格,并设置值表头 设置表头居中
HSSFCellStyle style = wb.createCellStyle();
//style.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 创建一个居中格式
if(titleList!=null&&titleList.size()>0){
//标题
for(int i =0;i<titleList.size();i++){
HSSFCell cell = row.createCell(i);
cell.setCellValue(titleList.get(i));
cell.setCellStyle(style);
}
}
//值
if(values!=null&&values.size()>0){
for (int i = 0; i < values.size(); i++){
row = sheet.createRow((int) i + 1);
List<String> value = values.get(i);
for(int k=0;k<value.size();k++){
HSSFCell cell = row.createCell(k);
cell.setCellValue(value.get(k));
cell.setCellStyle(style);
}
}
}
}
// 第六步,将文件存到指定位置
try
{
FileOutputStream fout = new FileOutputStream(filePath);
wb.write(fout);
fout.close();
}
catch (Exception e)
{
e.printStackTrace();
}
}
最后
以上就是矮小水杯为你收集整理的java导出excel,超60000行进入下一sheet的全部内容,希望文章能够帮你解决java导出excel,超60000行进入下一sheet所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复