实现多个excel导出不要压缩包

前台html如下:

<div style="display: none" id="downLoadIframeDivExample">
		  <iframe id="downLoadZipIframe{serialNo}" name="downLoadIframe{serialNo}" style="width: 0px;height: 0px;display: none;">
		  </iframe>
		  <form id="downLoadZipForm{serialNo}" action="/grm/ecp/FileAccessServlet"  target="downLoadIframe{serialNo}" method="post">
		    <input id="downloadFileName" type="hidden" name="name" >
		    <input id="downloadFileType"  type="hidden" name="fileType">
		    <input type="hidden" name="beanId" value="">
		    <input type="hidden" name="method" value="">
		    <input id="downloadOperParams" type="hidden"  name="operParams" value="" />
		    <input type="submit" value="" hidden="hidden">
		  </form>
		</div>

js 如下:

	function exportFileEvent(){
				var rowDatas = _thisPage.gridTable.getSelectedRowData();	
				var $body = $("body");
				//2021-01-20修改附表导出由压缩包变为多个excel
				var frameHtml = $("#downLoadIframeDivExample").html();
				if (rowDatas.length>0) { // 选择导出项目
					for(var i=0;i<rowDatas.length;i++){
						(function(i){
							_thisPage.params.projectIds = rowDatas[i].projectid;
						    _thisPage.params.modelIds = rowDatas[i].modelid;
							var zipName = rowDatas[i].projectno+"-"+rowDatas[i].projectname+"-"+rowDatas[i].createcompname;
							var formHtml = frameHtml.replaceAll("{serialNo}",(i+1));
							$body.append(formHtml);			
			                var beanId = _thisPage.queryBeanId;
							var method = "exportProjectFBListZip";
							$("#downLoadZipForm"+(i+1)+" #downloadFileName").val(zipName);
							$("#downLoadZipForm"+(i+1)+" #downloadFileType").val("xls");
							$("#downLoadZipForm"+(i+1)+" #beanId").val(beanId);
							$("#downLoadZipForm"+(i+1)+" #method").val(method);
							$("#downLoadZipForm"+(i+1)+" #downloadOperParams").val($.toJSON({p0:_thisPage.dataContext,p1:_thisPage.typeId,p2:_thisPage.params,p3:zipName,p4:_thisPage.modelId}));
							$("#downLoadZipForm"+(i+1)).attr("action","/grm/ecp/FileAccessServlet?beanId="+beanId+"&method="+method);
							$("#downLoadZipForm"+(i+1)).submit();
						}(i));
					}
				} 
			}

由于下载文件只有一个入口,所以在这里使用循环的方式提交请求。一个请求对应一个iframe,所以在html中使用{serialNo}作为模板,在js中循环替换生成多个iframe,downLoadZipForm:form表单最好也是生成多个的,和iframe对应起来。

 <input type="submit" value="" hidden="hidden">

需要设置成hidden,测试时会在页面上显示出来。

js 中涉及到js闭包。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现导出多个Excel文件并打包成压缩包,可以使用Java中的ZipOutputStream类来实现。以下是一个简单的示例代码: ```java try { // 创建ZipOutputStream对象 ZipOutputStream zipOut = new ZipOutputStream(new FileOutputStream("result.zip")); // 定义要导出Excel文件列表 List<File> excelFiles = new ArrayList<>(); excelFiles.add(new File("data1.xlsx")); excelFiles.add(new File("data2.xlsx")); // 遍历Excel文件列表,逐个写入到压缩包中 for (File excelFile : excelFiles) { // 创建ZipEntry对象,指定压缩包中的文件名 ZipEntry entry = new ZipEntry(excelFile.getName()); zipOut.putNextEntry(entry); // 读取Excel文件内容,并将其写入到ZipOutputStream中 FileInputStream in = new FileInputStream(excelFile); byte[] buffer = new byte[1024]; int len; while ((len = in.read(buffer)) > 0) { zipOut.write(buffer, 0, len); } // 关闭ZipEntry和输入流 in.close(); zipOut.closeEntry(); } // 关闭ZipOutputStream对象 zipOut.close(); } catch (IOException e) { e.printStackTrace(); } ``` 以上示例代码创建了一个ZipOutputStream对象,然后遍历要导出Excel文件列表,逐个将其写入到压缩包中。最后关闭ZipOutputStream对象即可。需要注意的是,在写入每个Excel文件时,都需要先创建一个ZipEntry对象来指定压缩包中的文件名,并调用ZipOutputStream的putNextEntry方法来开始写入该文件;写入完成后需要调用ZipOutputStream的closeEntry方法来结束该文件的写入。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值