JAVA后端代码
public void exportPregnancy(String startdate, String enddate, String ids, HttpServletRequest request, HttpServletResponse response) throws IOException, InvalidFormatException {
/*try {
List<FiveColors> list = fiveColorsService.getFiveColores(1, startdate,enddate, ids);
for (FiveColors fiveColors : list) {
fiveColors.setHandlingSuggestion("√");
if (fiveColors.getAssessGrading().equals("较高风险")) {
fiveColors.setAssessGrading("橙色");
} else if(fiveColors.getAssessGrading().equals("高风险")) {
fiveColors.setAssessGrading("红色");
}
}
// 过滤建档用户的状态
String fileDir = Thread.currentThread().getContextClassLoader().getResource("").toString();
resultMap.clear();
resultMap.put("status", 200);
fileDir = fileDir.substring(6,fileDir.length()-8);
String templExcel = "";
String fileName = "";
templExcel = pdfPath+"xlsx/"+"pregnancy.xlsx";
// templExcel = fileDir.substring(0, fileDir.lastIndexOf("/"))+"/Static/xlsx/"+"threefree.xlsx";
//templExcel = fileDir+"templates"+"/"+"threefree.xlsx";
if(!templExcel.contains(":")){
templExcel = '/'+templExcel;
}
fileName = "孕产妇妊娠风险评估分级报告登记表.xlsx";
response.setContentType("application/ms-excel");
response.setCharacterEncoding("UTF-8");
response.setHeader("Content-Disposition", "certification; filename="+new String(fileName.getBytes("GBK"), "iso8859-1"));
OutputStream out=response.getOutputStream();
ArrayList<List> beanList = new ArrayList<List>();
beanList.add(list);
resultMap.put("data", templExcel+list.size());
//处理导出逻辑
for (FiveColors colors : list) {
colors.setStatus(1);
fiveColorsMapper.updateById(colors);
}
ExcelUtil.createWebTemplExcel(templExcel, fileName, beanList,out);
}
catch (Exception e) {
resultMap.put("status", 202);
resultMap.put("message","数据不存在");
}*/
List<FiveColors> list = fiveColorsService.getFiveColores(1, startdate,enddate, ids);
FiveColors colors = new FiveColors();
if (StringUtil.isBlank(startdate)) {
startdate = "";
enddate = "";
}
colors.setSpecificInfo(startdate + "------" + enddate + "(共" + list.size() + ")人");
Date date=new Date();
colors.setCurrentDate(dateFormater.format(date));
for (FiveColors fiveColors : list) {
fiveColors.setHandlingSuggestion("√");
if (fiveColors.getAssessGrading().equals("较高风险")) {
fiveColors.setAssessGrading("√");
} else if(fiveColors.getAssessGrading().equals("高风险")) {
fiveColors.setAssessGradingn("√");
}
}
response.setContentType("application/vnd.ms-excel");
response.setHeader("Content-Disposition", "attachment;filename*=utf-8'zh_cn'" + "市四院妊娠风险.xls");
response.setHeader("Access-Control-Expose-Headers", "Content-Disposition");
Map<String,Object> map = new HashMap();
map.put("vms", list);
map.put("colors", colors);
String property = pdfPath;
String templateFileName = property+"xlsx/"+"市四院妊娠风险.xlsx";
String currntTime = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date());
String newFileName = "市四院妊娠风险 "+currntTime;
File destFile = File.createTempFile(newFileName, ".xls");
XLSTransformer transformer = new XLSTransformer();
transformer.transformXLS(templateFileName, map, destFile.getAbsolutePath());
FileInputStream fis = new FileInputStream(destFile);
ServletOutputStream out = response.getOutputStream();
byte[] bytes = new byte[512];
int i = 0;
while ((i = fis.read(bytes)) !=-1){
out.write(bytes,0,i);
}
out.close();
fis.close();
destFile.delete();
}
function exportdata(){
var a = $('#followup_object_displayer').data('selectedDatas');
var jsonstr="[]";
if (a != null) {
var jsonArray = eval('('+jsonstr+')');
for(var i=0;i<a.length;i++){
var obj = a[i];
var id = obj.id;
jsonArray.push(id);
}
}
var fileName = "市四院妊娠风险.xlsx";
var requestType = "post";
var startdate = $("#startdate").val();
var enddate = $("#enddate").val();
console.log("startdate=" + startdate);
//postData:{'startdate':$("#startdate").val(),'enddate':$("#enddate").val()},
var url = '<%=request.getContextPath()%>/three/exportPregnancy?'
+"&startdate="+startdate+"&enddate="+enddate+"&ids="+jsonArray;
obisCommonUtil.exportdata(fileName, url, requestType);
}
js
//js异步请求后台,后台返回文件流,然后下载之
obisCommonUtil.exportdata = function (fileName, url, requestType){
var xhr = new XMLHttpRequest();
xhr.open(requestType, url, true); // 也可以使用POST方式,根据接口
xhr.responseType = "blob"; // 返回类型blob
// 定义请求完成的处理函数,请求前也可以增加加载框/禁用下载按钮逻辑
xhr.onload = function () {
// 请求完成
if (this.status === 200) {
BJUI.alertmsg("info","导出成功!");
// 返回200
var blob = this.response;
var reader = new FileReader();
reader.readAsDataURL(blob); // 转换为base64,可以直接放入a表情href
reader.onload = function (e) {
// 转换完成,创建一个a标签用于下载
var a = document.createElement('a');
a.download = fileName;
a.href = e.target.result;
$("body").append(a); // 修复firefox中无法触发click
a.click();
$(a).remove();
}
}else{
BJUI.alertmsg("error","导出失败");
}
};
模板 ${vms.serialNumber} 这样去使用