JAVA 模板导出xlsx

这段代码展示了如何使用JAVA在后端处理妊娠风险评估数据,通过API接收参数,更新处理后的数据,并生成Excel报表进行下载。涉及数据库操作、日期格式化和文件流输出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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} 这样去使用
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值