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= 'http://www.cgvv.com.cn/bcjs/jee/AssessGradeSumC/exportWord?id='+selectedRows[0].id; layer.close(index); }, function(index){ window.location.href= 'http://www.cgvv.com.cn/bcjs/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文件案例就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。
相關文章:
