EasyExcel填充数据EasyExcel填充数据流下载 easyexcel填充excel下载 easyexcel填充

EasyExcel填充数据EasyExcel填充数据流下载 easyexcel填充excel下载 easyexcel填充

1、填充数据然后将文件输出给浏览器

官网地址

官网的demo填充生成的是file文件, 实际需求用的最多的是 填充完数据将Excel输出给浏览器

填充模版Excel文件用的是官方的: 地址: https://github.com/alibaba/easyexcel/blob/master/easyexcel-test/src/test/resources/fill/complex.xlsx

示例代码来自官方的 复杂填充 代码改造,官网地址: https://github.com/alibaba/easyexcel/blob/master/easyexcel-test/src/test/java/com/alibaba/easyexcel/test/demo/fill/FillTest.java

java 复制代码
	/*
	* 构建数据
	*/
    private List<FillData> data() {
        List<FillData> list = ListUtils.newArrayList();
        for (int i = 0; i < 10; i++) {
            FillData fillData = new FillData();
            list.add(fillData);
            fillData.setName("张三");
            fillData.setNumber(5.2);
            fillData.setDate(new Date());
        }
        return list;
    }

	public void complex(HttpServletRequest request, HttpServletResponse response) throws ServiceException, IOException {
		
		// 模版所在路径,将官方文件下载下来
		File template= "F:\\complexFiles\\complex.xlsx";
		
		// EasyExcel没有提供填充数据 Excel流下载。需要自己实现
		
		// 创建一个 字节数组输出流,填充数据到字节数组流,然后在输出给浏览器
		ByteArrayOutputStream os = new ByteArrayOutputStream();
	
        
		try (ExcelWriter excelWriter = EasyExcel.write(os).withTemplate(template).build()) {
			
			WriteSheet writeSheet = EasyExcel.writerSheet().build();
			
			// 填充列表数据
			excelWriter.fill(data(), writeSheet);
			
			// 写入list之前的数据
            Map<String, Object> map = MapUtils.newHashMap();
            map.put("date", "2019年10月9日13:28:28");
            map.put("total", 1000);
			
			excelWriter.fill(map, writeSheet);
			
			// 刷新
			excelWriter.finish();
			
			// 直接输出文件
//            response.getOutputStream().write(os.toByteArray());
//            response.getOutputStream().flush();
			
			BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(response.getOutputStream(), 8152);
			bufferedOutputStream.write(os.toByteArray());
			bufferedOutputStream.close();
			
			// 或者使用GZIP压缩输出,但是需要服务器支持
//            OutputStream outputStream = response.getOutputStream();
//            GZIPOutputStream gzipOutputStream = new GZIPOutputStream(outputStream);
//            // 或者
//            DeflaterOutputStream deflaterOutputStream = new DeflaterOutputStream(outputStream);
//            deflaterOutputStream.write(os.toByteArray());
//            deflaterOutputStream.finish();
//            deflaterOutputStream.close();
		
		}
		
	}
相关推荐
CircleMouse4 小时前
如何设置wps单元格下拉选项设置
excel·wps
zhangjin12229 小时前
kettle插件-excel插件,kettle读取excel动态表头,kettle根据列名读取excel
excel·kettle·kettle excel插件·kettle 动态excel
远洪1 天前
excel 找出两列不同的数据
excel
pcplayer1 天前
非常好用的 Excel 读写控件
excel·delphi·office
Navicat中国1 天前
使用 Navicat 导入向导导入 Excel 数据时,系统提示导入成功,表中也能看到数据,但行数统计显示为 0,这是什么原因?
数据库·excel·导入
穿着内裤的外星人1 天前
触控精灵远程读写Excel步骤配置
excel
是孑然呀1 天前
【小记】excel vlookup一对多(第二篇)
excel
开开心心就好2 天前
专为视障人士设计的免费辅助工具
windows·计算机视觉·计算机外设·excel·散列表·推荐算法·csdn开发云
transformer_WSZ2 天前
excel两列数据绘制折线图
excel·折线图
蒋胜山2 天前
Excel 练习题(5)
经验分享·excel