前言
写这篇文章的原因,由于看到昨天群里有朋友为导出数据到Excel表格而烦恼。当时他使用的是POI导出Excel,不仅要写大量代码来画表格,还不美观。所以,今天就在这给大家讲一下如何用jxls模板导出Excel。
所需jar包
建立导出模板
注意:<jx:forEach items="${list}" var="l">标签跟${l.name}是同一列,并且不能对该行进行合并,结束位置也是。
模板导出工具类代码
package com.gxnj.utils;
import net.sf.jxls.transformer.XLSTransformer;
import org.apache.poi.ss.usermodel.Workbook;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Map;
/**
* @author src
* 使用模板导出Excel表格工具类
* @date 2017-01-19
*/
public class MyExportExcelUtils {
public static void exportTempleExcel(Map beans, String srcPath, OutputStream os){
XLSTransformer transformer = new XLSTransformer();
try {
//获得模板的输入流
FileInputStream in = new FileInputStream(srcPath);
//将beans通过模板输入流写到workbook中
Workbook workbook = transformer.transformXLS(in, beans);
//将workbook中的内容用输出流写出去
workbook.write(os);
}catch (Exception e) {
e.printStackTrace();
throw new RuntimeException();
}finally{
if(os!=null){
try {
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
导出Excel表格方法
/**
* 导出Excel表格
* @author src
* @date 2017-7-04
*/
@RequestMapping(params = "saveAsExcel")
public void saveFSWAsExcel(HttpServletRequest request,HttpServletResponse response)throws Exception{
/**查出信息并放到map中*/
Map<String,Object> beans = new HashMap<String,Object>();
// beans.put("xm", xm);
//报表主体数据
List<Map> list = questionnarieServiceI.getWenjExpList(request); //报表列表详情
beans.put("list", list);
//获得模板路径
String path = request.getServletContext().getRealPath("");
String srcPath = path + File.separator +"/WEB-INF/xls/ExpFSWDemo.xls";
//准备输出流
OutputStream os = null;
try {
String fileName = "xx问卷";
response.setContentType("application/x-excel");
response.setHeader("Content-Disposition", "attachment;filename=" + new String(fileName.getBytes("gb2312"),"ISO-8859-1") +".xls");
os = response.getOutputStream();
MyExportExcelUtils.exportTempleExcel(beans,srcPath,os);
} catch (Exception e) {
e.printStackTrace();
}
}
刚才导出模板途中的list就是该方法报表主体数据list
搞定!
后面再分享导出所需jar包,需要的童鞋来拿。