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();
		
		}
		
	}
相关推荐
Cloud_Shy61815 小时前
Python 数据分析基础入门:《Excel Python:飞速搞定数据分析与处理》学习笔记系列(第十二章 用户定义函数 上篇)
python·数据分析·excel·pandas
QuZhengRong15 小时前
【Luck-Report】缓存
java·前端·后端·vue·excel
程序员老油条17 小时前
Excel合并的单元格拆分并批量填充为已有数据
excel
QQ129584550418 小时前
FERP50 - Excel以存储过程方式访问数据仓库
数据仓库·spark·excel
Omics Pro19 小时前
免费!糖蛋白质组学数据分析
开发语言·深度学习·数据挖掘·数据分析·r语言·excel·知识图谱
开始脱发的自然卷19 小时前
用 Excel 手算一个 1-6-1 MLP:前向传播、损失、反向传播与参数更新
excel
阿波罗尼亚19 小时前
浮点数精度问题
java·excel
程序员敲代码吗1 天前
Go语言中Channel的实现与内存通信机制详解
excel
时空自由民.1 天前
vim入门配置教程
编辑器·vim·excel
_院长大人_1 天前
Java Excel导出:如何实现自定义表头与字段顺序的完全控制
java·开发语言·后端·excel