• 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

    	/*
    	* 构建数据
    	*/
        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 {
    		
    	
    		// 把官方 模版下载下来放在  resource资源目录下,获取填充模版文件输入流, 也可以使用 File 对象
    	
    		InputStream inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("excel-templates/tianchong.xlsx");
    	
    		
    		// EasyExcel没有提供填充数据 Excel流下载。需要自己实现
    		
    		// 创建一个 字节数组输出流,填充数据到字节数组流,然后在输出给浏览器
    		ByteArrayOutputStream os = new ByteArrayOutputStream();
    	
            
    		try (ExcelWriter excelWriter = EasyExcel.write(os).withTemplate(inputStream).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.setHeader("Access-Control-Allow-Origin", "*");
    			response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
    			response.setCharacterEncoding("utf-8");
    			// 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系
    			String fileName = URLEncoder.encode(String.format("填充数据(%s)", LocalDate.now()), "UTF-8").replaceAll("\\+", "%20");
    			response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx");
    
    
    			// 直接输出文件
    //            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();
    		
    		}
    		
    	}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
  • 相关阅读:
    visual studio code 创建 SSH 远程连接
    网络编程及三大协议(TCP + UDP + Http)
    接口测试框架-Rest-Assured教程,入门即精通
    Java版企业电子招标采购系统源码—企业战略布局下的采购寻源
    大型网站系统架构演化实例_8.业务拆分
    品质创未来!流辰信息技术公司实力谱新章!
    小程序原生开发中的onLoad和onShow
    CleanMyMac X免费电脑清理加速软件-清理内存磁盘缓存注册表
    江湖再见:毫米波雷达开发手册之行为识别应用
    短信发送:使用RestTemplate的时候,遇到类型无法转换的问题
  • 原文地址:https://blog.csdn.net/qq_40739917/article/details/132762801