使用poi导出Excel数据量过大导致内存溢出的解决办法

1.关于poi中的Excel工作薄对象
1.HSSFWorkbook:是操作Excel2003以前(包括2003)的版本,扩展名是.xls;

2.XSSFWorkbook:是操作Excel2007的版本,扩展名是.xlsx;

2.从网上找了许多的文章,简单的说一下几种解决的办法

  1. 数据量大的时候,可以分批的导出数据库中的数据
  2. 使用SXSSFWorkbook(poi3.8+)
    下面是导出2007以上版本poi的代码的一部分
    (2007以下版本不能用)
@RequestMapping("/exportExcel2007")
	public void exportExcel2007(String fileName, HttpServletResponse response) {
		List<SalaryPay> list = excelMapper.selectAll();
		
		XSSFWorkbook xwb = new XSSFWorkbook();
		XSSFSheet xsheet = xwb.createSheet("自定义sheet名称");
		
		XSSFRow xheader = xsheet.createRow(0);

改变中后的代码

@RequestMapping("/exportExcel2007")
	public void exportExcel2007(String fileName, HttpServletResponse response) {
		List<SalaryPay> list = excelMapper.selectAll();
		//大于1000行时会把之前的行写入硬盘
		SXSSFWorkbook wb = new SXSSFWorkbook(100);
		XSSFSheet xsheet = xwb.createSheet("自定义sheet名称");
		
		XSSFRow xheader = xsheet.createRow(0);
  1. 使用CVS格式解析

你可能感兴趣的:(Java,Poi)