Java实现Excel下载,excel文件流输出到浏览器

      关于实现Excel下载,我使用的是easypoi, easypoi功能如同名字easy,主打的功能就是容易,让一个没见接触过poi的人员就可以方便的写出Excel导出,Excel模板导出,Excel导入,Word模板导出,通过简单的注解和模板语言(熟悉的表达式语法),完成以前复杂的写法.easypoi的目标不是替代poi,而是让一个不懂导入导出的快速使用poi完成Excel和word的各种操作,而不是看很多api才可以完成这样工作。详细内容,大家可以看一下easypoi的官方文档(http://easypoi.mydoc.io/#text_197818)。

      easypoi可以实现Excel的下载,但在测试过程中,发现easypoi只可以实现下载文件到服务器上,不支持下载文件到本地机,宝宝也是醉了。所以在网上找了一些资料,实现了excel文件流输出到浏览器。不说了,代码附上。

       

 public void dowland (HttpServletRequest request, HttpServletResponse response)throws Exception {
            //模板导出
        	Workbook workbook = null;
    		OutputStream outstream = null;
    		try {
            	SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");//设置日期格式
                String newsNo = df.format(new Date());
                String fileName="测试_"+newsNo;
                String filePro=dowlandUrl+fileName+".xls";//dowlandUrl为配置文件中下载到电脑的路径
    			// excel文件流输出到浏览器,选择下载路径
    			File f = new File(request.getSession().getServletContext().getRealPath("/")+ exportLocation + fileName );
    			List<TestEntity> list = new ArrayList<TestEntity>();//TestEntity为模板下载的实体       
	                list.add(new TestEntity("XXX", "XXX","XXX", "XXX","XXX", "XXX"));//为实体赋值
    			workbook = ExcelExportUtil.exportExcel(new ExportParams(), TestEntity.class, list);

    			outstream = response.getOutputStream();

                       /**这段代码可以实现Excel以文件流的形式到浏览器中,浏览器左下角出现Excel的下载提示,

                        *new String(fileName.getBytes(),"iso-8859-1")可是实现文件名为中文,不是乱码  */
                        response.reset();
                        response.setHeader("Content-disposition", "attachment; filename=" + new String(fileName.getBytes(),"iso-8859-1") + ".xls");
                        response.setContentType("application/x-download");
    			workbook.write(outstream);
    			outstream.close();
    		} catch (Exception e) {// 发生不可预知异常,在此截获异常信息,并返回客户操作不成功
    			logger.info("测试导出失败!!!");
    		}
        }



    			


猜你喜欢

转载自blog.csdn.net/amy1213272092/article/details/80534312