Java批量导出word压缩后的zip文件案例
更新时间:2020年10月01日 11:11:22 作者:Z丶royAl
这篇文章主要介绍了Java批量导出word压缩后的zip文件案例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
一、js代码,由于参数比较大所以利用form表单使用post导出
function export_word(){ var selectedRows = $("#dg").datagrid("getSelections"); if (selectedRows.length==0) { showAlertWarning("请选择一条的信息..."); return; } if (selectedRows.length > 1) {//批量导出压缩文件 var id = ""; for (var i = 0; i < selectedRows.length; i++) { var row = selectedRows[i]; id += row.id+"name"+row.user_name+"@@"; } layer.confirm('请选择要导出考核表的类型?', { btn: ['次数','具体条目'] //按钮 }, function(index){ postExportFile({"id":id,"type":0},"jee/AssessGradeSumC/exportWordsZip"); layer.close(index); }, function(index){ postExportFile({"id":id,"type":1},"jee/AssessGradeSumC/exportWordsZip"); }); } else {//导出单个 layer.confirm('请选择要导出考核表的类型?', { btn: ['次数','具体条目'] //按钮 }, function(index){ window.location.href= "jee/AssessGradeSumC/exportWord?id="+selectedRows[0].id; layer.close(index); }, function(index){ window.location.href= "jee/AssessGradeSumC/exportWordForSpecific?id="+selectedRows[0].id; }); } } function postExportFile(params, url) { //params是post请求需要的参数,url是请求url地址 var form = document.createElement("form"); form.style.display = 'none'; form.action = url; form.method = "post"; document.body.appendChild(form); for(var key in params){ var input = document.createElement("input"); input.type = "hidden"; input.name = key; input.value = params[key]; form.appendChild(input); } form.submit(); form.remove(); }
二、controller代码(读完压缩文件后删除文件)
/** * * @Description 考核成绩汇总考核表批量导出压缩 * @Fcunction exportWordsZip * @param response * @return ReturnDatas * */ @ResponseBody @SystemControllerLog(description = "考核成绩汇总考核表批量导出压缩") @RequestMapping(value = "exportWordsZip") public ReturnDatas exportWordsZip(HttpServletResponse response, String id, String type) { ReturnDatas returnDatas = ReturnDatas.getSuccessReturnDatas(); try { response.setCharacterEncoding("UTF-8"); response.setContentType("application/msexcle"); response.setHeader("content-disposition", "attachment;filename=" + new String("考核成绩汇总表".getBytes("gb2312"), "ISO8859-1") + ".zip"); String fileUrl = assessGradeSumService.exportWordsZip(id,type); OutputStream outputStream = response.getOutputStream(); BufferedInputStream bis = new BufferedInputStream(new FileInputStream(fileUrl));; BufferedOutputStream bos = new BufferedOutputStream(outputStream); byte[] buff = new byte[2048]; int bytesRead; while (-1 != (bytesRead = bis.read(buff, 0, buff.length))) { bos.write(buff, 0, bytesRead); } bis.close(); bos.close(); outputStream.close(); File zip = new File(fileUrl); if (zip.exists() && zip.isFile()) { zip.delete(); } return returnDatas; } catch (Exception e) { e.printStackTrace(); LogUtil.error("考核成绩汇总考核表批量导出压缩异常:" + e.getMessage(), e); returnDatas.setStatus(ReturnDatas.ERROR); returnDatas.setMessage("考核成绩汇总考核表批量导出压缩异常。"); } return returnDatas; }
三、实现类代码,其中exportWord()和exportWordForSpecific()都是具体的word导出方法,生成zip压缩文件后删除word文件,ZipUtils是压缩文件工具类
/** * * @Fcunction exportWordsZip * @param id * @param type * @return String * */ @Override public String exportWordsZip(String id, String type)throws Exception{ String[] ids = id.split("@@"); List<File> fileList = new ArrayList<>(); String url = "C:\\"; for (int i = 0; i < ids.length; i++) { String id_name = ids[i]; String id_value = id_name.split("name")[0]; String name = id_name.split("name")[1]; String docUrl = url + name + ".doc"; fileList.add(new File(docUrl)); XWPFDocument workbook = null; if ("0".equals(type)) {//按次 workbook = exportWord(id_value); } else {//表单条目 workbook = exportWordForSpecific(id_value); } FileOutputStream out = new FileOutputStream(docUrl); workbook.write(out); } String zipUrl = url+"考核成绩汇总表.zip"; FileOutputStream fos = new FileOutputStream(new File(zipUrl)); ZipUtils.toZip(fileList, fos); for (File out:fileList) { if (out.exists() && out.isFile()) { out.delete(); } } return zipUrl; }
以上这篇Java批量导出word压缩后的zip文件案例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
logback-spring.xml的配置及示例详解(直接复制粘贴可用)
在使用logback作为日志框架时,可以创建一个名为logback-spring.xml的配置文件来自定义日志输出的格式和方式,下面这篇文章主要给大家介绍了关于logback-spring.xml的配置及示例详解的相关资料,文中的代码直接复制粘贴可用,需要的朋友可以参考下2024-01-01spring boot 使用Mybatis-plus查询方法解析
这篇文章主要介绍了spring boot 使用Mybatis-plus查询方法解析,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下2022-09-09BeanFactory和FactoryBean的区别示例详解
这篇文章主要为大家介绍了BeanFactory和FactoryBean的区别示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2022-10-10详解SpringMVC组件之HandlerMapping(一)
这篇文章主要介绍了详解SpringMVC组件之HandlerMapping(一),HandlerMapping组件是Spring MVC核心组件,用来根据请求的request查找对应的Handler,在Spring MVC中,有各式各样的Web请求,每个请求都需要一个对应的Handler来处理,需要的朋友可以参考下2023-08-08
最新评论