@RequestMapping(value = "/print")
public String print(){
try {
response.setCharacterEncoding("utf-8");
response.setContentType("text/html; charset=utf-8");
// 设置导出的文件名称
String BBMC = "月报管理";
//获取 项目 template 目录下 模板sxybgl.xlsx 文件的路径
String filePath = request.getSession().getServletContext().getRealPath("template") + File.separatorChar + "sxybgl.xlsx";
ExcelServicePrinter printObject = ExcelServicePrinter.openTemplate(filePath);
//查询SQL获取要导出的值
String sql ="select * from daul";
List<Map> lstData = Context.getDao().execSqlQueryToMap(sql);
if (lstData != null && lstData.size() > 0) {
// 如:第一行是表名,第二行是标题,第三行是放导出的内容,那么 int startRow=3;
int startRow = 2;//从第二行开始
for (int i = 0; i < lstData.size(); i++) {
Map data = lstData.get(i);
String xqmc = data.get("xqmc") == null ? "" : data.get("xqmc").toString();
String sxjhmc = data.get("sxjhmc") == null ? "" : data.get("sxjhmc").toString();
String xh = data.get("xh") == null ? "" : data.get("xh").toString();
String xm = data.get("xm") == null ? "" : data.get("xm").toString();
String bj = data.get("bj") == null ? "" : data.get("bj").toString();
String dwmc = data.get("dwmc") == null ? "" : data.get("dwmc").toString();
String qymc = data.get("qymc") == null ? "" : data.get("qymc").toString();
String sxgw = data.get("sxgw") == null ? "" : data.get("sxgw").toString();
String qdddmc = data.get("xnzdjs") == null ? "" : data.get("xnzdjs").toString();
startRow++;
// 从第二行开始 2行复制,到第2行结束。把复制的行放到 startRow++ 行
printObject.copyRange(2, 2, startRow);
printObject.printCellText(startRow, 1, (i+1));//序号
printObject.printCellText(startRow + 1, 1, xqmc);
printObject.printCellText(startRow + 1, 2, sxjhmc);
printObject.printCellText(startRow + 1, 3, xh);
printObject.printCellText(startRow + 1, 4, xm);
printObject.printCellText(startRow + 1, 5, bj);
printObject.printCellText(startRow + 1, 6, dwmc);
printObject.printCellText(startRow + 1, 7, qymc);
printObject.printCellText(startRow + 1, 8, sxgw);
printObject.printCellText(startRow + 1, 9, qdddmc);
startRow++;
}
printObject.delRows(2, 2 );//删除模版
} else {
this.writeJsMessage(response, "alert('无导出数据')");
return null;
}
//输出
OutputStream output = null;
try {
response.setContentType("application/x-msdownload");
String filename = new String(BBMC.getBytes("GBK"), "iso8859-1");
response.addHeader("Content-Disposition", "attachment;filename=" + filename + ".xls");
output = response.getOutputStream();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
printObject.write(output);
try {
output.flush();
output.close();
} catch (Exception e) {
e.printStackTrace();
}
} catch (Exception e) {
log.error(e.getMessage(), e);
this.writeJsMessage(response, "alert('导出失败!');");
}
return null;
}