js:
//导出Excel
$('#button_export').on('click', function(e) {
if($('#select_service').val() != 'all'){
exportExcel();
}else{
alert('请选择一个服务!');
}
});
var exportExcel = function(){
var beginTime;
var endTime;
var url;
beginTime = $('#reservationtime').val().split(daterange.separator)[0];
endTime = $('#reservationtime').val().split(daterange.separator)[1];
if (moment(endTime).isBefore(moment(), 'day')) {
url = "svcLogHis/exportExcelInvokeDelay.do";
}else{
url = "svcLog/exportExcelInvokeDelay.do";
}
var param = {
svcName:$('#select_service').val(),
beginTime : beginTime,
endTime:endTime
};
var strdata = '';
for(var key in param){
strdata += '&' + key + '=' + param[key];
}
strdata = strdata.substring(1);
window.location.href = url+'?'+strdata;
};
Controller:
@RequestMapping(value = "/exportExcelInvokeDelay.do", method = { RequestMethod.POST, RequestMethod.GET })
public void exportExcelInvokeDelay(HttpServletResponse response,HttpServletRequest request,
@RequestParam(value = "svcName", required = true) String svcName,
@RequestParam(value = "beginTime", required = true) String beginTime,
@RequestParam(value = "endTime", required = true) String endTime){
long begin = 0l;
long end = 0l;
List<EsbServiceLog> data = null;
try {
begin = DateUtil.getTimeFormat().parse(beginTime).getTime();
end = DateUtil.getTimeFormat().parse(endTime).getTime();
data = serviceLogDao.findLogDelayByConditionInProcess1(svcName, begin, end, 0, 0);
String path = request.getSession().getServletContext().getRealPath("/");
XSSFWorkbook xb = serviceLogDao.exportExcelForInvokeDelayExport(path + "resources/template/InvokeDelay.xlsx", data);
FileOutputStream fileOutputStream = new FileOutputStream(path + "resources/template/download-InvokeDelay-export-" + svcName + ".xlsx");
xb.write(fileOutputStream);
fileOutputStream.close();
String p = path + "/resources/template/download-InvokeDelay-export-" + svcName + ".xlsx";
File file = new File(p);
if (file.exists()) {
InputStream inputStream = null;
inputStream = new BufferedInputStream(new java.io.FileInputStream(p));
String fileName = new String(("调用延迟信息").getBytes("gb2312"), "ISO8859-1") + ".xlsx";
response.setContentType("application/" + fileName);
response.setHeader("Content-Disposition", "attachment;" + "filename=" + fileName);
FileCopyUtils.copy(inputStream, response.getOutputStream());
}
} catch (IOException io) {
io.printStackTrace();
logger.error("文件生成错误 :{}");
} catch (Exception e) {
e.printStackTrace();
logger.error("一些其他的错误 :{}");
}
}
Dao 实现层:
@Override
public XSSFWorkbook exportExcelForInvokeDelayExport(String fileName,
List<EsbServiceLog> data) {
XSSFWorkbook xb = null;
try {
xb = new XSSFWorkbook(new FileInputStream(fileName));
} catch (IOException e) {
e.printStackTrace();
}
XSSFSheet sheet = xb.getSheetAt(0);
int x = 1;
for (EsbServiceLog cln : data) {
XSSFRow row = sheet.createRow(x);
// 服务名
XSSFCell cell0 = row.createCell((short) 0);
cell0.setCellValue(cln.getSvcName());
// 服务别名
XSSFCell cell1 = row.createCell((short) 1);
cell1.setCellValue(cln.getSvcAlias());
// 操作名
XSSFCell cell2 = row.createCell((short) 2);
cell2.setCellValue(cln.getOpName());
// 时间段
XSSFCell cell3 = row.createCell((short) 3);
cell3.setCellValue(cln.getBeginTime());
// 调用次数
XSSFCell cell4 = row.createCell((short) 4);
cell4.setCellValue(cln.getDelayTime());
x++;
}
return xb;
}