关于实现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("测试导出失败!!!");
}
}