SXSSFWorkbook的使用

SXSSFWorkbook 的优缺

只会保留固定大小数据在内存中,其它的数据都会写到磁盘里持久化,最后在输出,这样的话占用的内存就会很少。
有些复杂的样式会不生效,因此,更推荐使用easyExcel

代码

	public JSONObject testSXSSFWorkbook(HttpServletResponse res) {
    
    
		SXSSFWorkbook sxssfWorkbook = null;
		try {
    
    
			// 使用poi的 SXSSFWorkbook,他会把内存数据存入磁盘中,占用内存就小
			//SXSSFWorkbook 只会保留500条数据在内存中,其它的数据都会写到磁盘里,这样的话占用的内存就会很少
			// 这里要注意的是,如果你需要某些样式,必须使用XSSFWorkbook 先行设置,否则样式会不生效
			XSSFWorkbook xssfWorkbook = new XSSFWorkbook();
			XSSFSheet xssfSheet = xssfWorkbook.createSheet("0");
			// 设置 xssfSheet 的样式。
			// 创建 SXSSFWorkbook
			sxssfWorkbook = new SXSSFWorkbook(xssfWorkbook, 500);
			SXSSFSheet sxssfSheet = sxssfWorkbook.getSheetAt(0);
			List<String> testList = new ArrayList<>();
			testList.add("1111");
			testList.add("1111");
			testList.add("1111");
			// 设置 sxssfSheet 内容、样式等等,这里我们推荐进行数据库分页查询,一步步写入到sheet,这样数据库压力和应用内存占用会更加小。

			// 最后向客户端输出文件流
			sxssfWorkbook.write(res.getOutputStream());
		} catch (IOException e) {
    
    
			log.error("生成导出文件失败,错误信息", e);
		} finally {
    
    
			if (sxssfWorkbook != null) {
    
    
				sxssfWorkbook.dispose();// 释放workbook所占用的所有windows资源
			}
		}
		return null;
	}

猜你喜欢

转载自blog.csdn.net/blood_Z/article/details/128774779
今日推荐