使用jxl根据下载数据模版导出excel表——合并配置:
首先根据模版文件路径读取excel模版文件,然后对excel文件进行修改,即写出数据到excel文件中,再将该excel文件保存到目标文件中,这里操作excel必须是2003版本(.xls)
- 准备excel模版文件
- 调用JxlUtil.java类的方法代码
/**
* 导出excel表
*
*/
public void download(HttpServletRequest request, HttpServletResponse response) {
try {
String wdir = request.getSession().getServletContext().getRealPath("");
String tempname = "test";
String dlFile = "/files/tmp/" + DateTimeUtil.getCurDateTime("yyyyMMdd") + "/"
+ tempname + System.nanoTime() + ".xls";// 临时文件目录
String opTemp = wdir + "/files/temp/" + tempname + ".xls";// 导出数据模板文件的路径
// 创建保存写出excel表的数据
Map<String, Object> map = new HashMap<String, Object>();
map.put("outPutDate", DateTimeUtil.getCurDateTime("yyyy-MM-dd"));
// 从数据库查询的数据列表
List<Map<String, Object>> dataList = new ArrayList<Map<String,Object>>();
map.put("dataList", dataList);
// 合并配置
Properties p = new Properties();
p.setProperty("mergeKey", "key1,key2");// 按哪几列的数据进行合并
p.setProperty("mergeCol", "4");// 合并哪几列
boolean wb = false;
wb = JxlUtil.wrireExcel(map, wdir + dlFile, opTemp, p);
if (!wb) {
response.setCharacterEncoding("utf-8");
response.setContentType("text/html; charset=utf-8;");
response.getWriter().print("<script>window.top.alert('下载文件失败,请稍后再试,谢谢。');</script>");
} else {
String basePath = request.getScheme() + "://" + request.getServerName() + ":"
+ request.getServerPort();
response.getWriter().print("<script>window.location.href='" + basePath + dlFile + "';</script>");
}
} catch (IOException e) {
e.printStackTra