public void exportBigDataExcel(DTO dto, String path)
throws IOException {
// 最重要的就是使用SXSSFWorkbook,表示流的方式进行操作
// 在内存中保持100行,超过100行将被刷新到磁盘
SXSSFWorkbook wb = new SXSSFWorkbook(100)
Sheet sh = wb.createSheet()
Row row = sh.createRow(0)
// -----------定义表头-----------
Cell cel0 = row.createCell(0)
cel0.setCellValue("xxx0")
Cell cel1 = row.createCell(1)
cel1.setCellValue("xxx1")
Cell cel2 = row.createCell(2)
cel2.setCellValue("xxx2")
Cell cel3 = row.createCell(3)
cel3.setCellValue("xxx3")
Cell cel4 = row.createCell(4)
cel4.setCellValue("xxx4")
Cell cel5 = row.createCell(5)
cel5.setCellValue("xxx5")
Cell cel6 = row.createCell(6)
cel6.setCellValue("xxx6")
Cell cel7 = row.createCell(6)
cel7.setCellValue("xxx7")
// ---------------------------
List<DTO> list = new ArrayList<DTO>()
// 数据库中存储的数据行
int page_size = 10000
// 求数据库中待导出数据的行数
int list_count = (int) dao.getListTotal(dto)
// 根据行数求数据提取次数
int export_times = list_count % page_size > 0 ? list_count / page_size
+ 1 : list_count / page_size
if(list_count<page_size) {
page_size=list_count
}
// 按次数将数据写入文件
for (int j = 0
//分页
dto.setStart(page_size*j+1)
dto.setEnd(page_size*(j+1))
list=dao.getList(dto)
int len = list.size() < page_size ? list.size() : page_size
for (int i = 0
Row row_value = sh.createRow(j * page_size + i + 1)
Cell cel0_value = row_value.createCell(0)
cel0_value.setCellValue(list.get(i).getxx0())
Cell cel1_value = row_value.createCell(1)
cel1_value.setCellValue(list.get(i).getxx1())
Cell cel2_value = row_value.createCell(2)
cel2_value.setCellValue(list.get(i).getxx2())
Cell cel3_value = row_value.createCell(3)
cel3_value.setCellValue(list.get(i).getxx3())
Cell cel4_value = row_value.createCell(4)
cel4_value.setCellValue(list.get(i).getxx4())
Cell cel5_value = row_value.createCell(5)
cel5_value.setCellValue(list.get(i).getxx5())
Cell cel6_value = row_value.createCell(6)
cel6_value.setCellValue(list.get(i).getxx6())
Cell cel7_value = row_value.createCell(7)
cel7_value.setCellValue(list.get(i).getxx7())
}
list.clear()
}
FileOutputStream fileOut = new FileOutputStream(path)
wb.write(fileOut)
fileOut.close()
wb.dispose()
}