使用itext導出多個 數據庫中的富文本html標籤(帶佔位符可替換的)的word文檔並壓縮

首先引入 itext 需要的jar包 

      <dependency>
	      <groupId>com.lowagie</groupId>
	      <artifactId>iText</artifactId>
	      <version>2.1.3</version>
	  </dependency>
	  <dependency>
	      <groupId>com.lowagie</groupId>
	      <artifactId>itext-rtf</artifactId>
	      <version>2.1.3</version>
	  </dependency>

其次是我們的controller 從前端接收到 必要的參數 ,從數據庫得到自己想要導出的富文本內容其次導出word

    @RequestMapping("/externalVisitToBeReviewed")
	@ResponseBody
	public ResultBean externalVisitToBeReviewed(HttpServletRequest request, HttpServletResponse response, String casIds,
			String chIds, String paths) throws IOException {
		ResultBean resultBean = new ResultBean();
        //這個是我查詢數據庫的方法 換成你自己的內容即可
		DocTemplate docTemplate = 
        docTemplateService.selectDocTemplateById(Long.valueOf(paths));
		String content = docTemplate.getTmpHtml();
		String[] casIdArray = casIds.split(",");
		String[] chIdArray = chIds.split(",");
        //這裏生成你要導出之後的壓縮包名字
		String zipName = new Date().getTime() + ".zip";
        //下面註釋掉的這句如果 前段沒有設置的話 最好不寫 要不然 壓縮包可能會打不開
//		response.setContentType("APPLICATION/OCTET-STREAM");
        //設置請求頭
		response.setHeader("Content-Disposition", "attachment; filename=" + zipName);
		ZipOutputStream out = new ZipOutputStream(response.getOutputStream());
		try {
			File file = new File(wordTemplate);
            //這裏判斷下選中的導出的文件夾是否存在 如果不存在 就自己創建
			if(!file.exists()){
				file.mkdirs();
			}
            //循環我上面的條件 如果循環三次 最後導出的壓縮包中就有三個word文檔
			for (int i = 0; i < casIdArray.length; i++) {
                 //循環裏的 是真正導出word的方法 這裏調用下
				String path = wordTemplate + new Date().getTime() + ".doc";
				wordService.externalVisitToBeReviewed(request, response, casIdArray[i], chIdArray[i], path, content);
			}
            //這裏把剛剛導出word的文件夾壓縮 然後返回給前臺
			ZipUtils.doCompress(wordTemplate, out);
			response.flushBuffer();
			resultBean.put("msg", "下載成功");
			resultBean.put("code", "1");
		} catch (Exception e) {
			e.printStackTrace();
			resultBean.put("msg", "下載失敗");
			resultBean.put("code", "0");
		} finally {
			out.close();
            //這裏是對下載到本地的word進行下 刪除操作 要不然下次再下載 這次的 也會跟着下載下去
			FileUploadUtils.deleteFileCCDS(wordTemplate);
		}
		return resultBean;
	}

下面這個是itext 導出word的方法

@Override
	public String externalVisitToBeReviewed(HttpServletRequest request,HttpServletResponse response, String casId,String chId,String path,String content) throws Exception {
        //這裏是我封裝的一個model 用來替換富文本中的佔位符用的
		Placeholder placeholder = new Placeholder(Long.valueOf(casId), !"".equals(chId)?Long.valueOf(chId):null, bankCaseMapper, caseHpMapper, salEmpMapper, typeListMapper);
		OutputStream out = new FileOutputStream(path);  
        Document document = new Document(PageSize.A4);  
        RtfWriter2.getInstance(document, out);  
        document.open();  
        Paragraph context = new Paragraph();
        StyleSheet ss = new StyleSheet();  
        //這裏是 判斷 數據庫的富文本中有沒有某個佔位符 然後進行替換
        content = replacePlaceholder(content, placeholder);
        List htmlList = HTMLWorker.parseToList(new StringReader(content), ss);  
        for (int i = 0; i < htmlList.size(); i++) {  
            com.lowagie.text.Element e = (com.lowagie.text.Element) htmlList  
                    .get(i);  
            context.add(e);  
        }  
			document.add(context);
        document.close();  
        System.out.println("ok");  
		return path;

	}

最後是我替換的 方法 你們可以按自己需求自己定義 我這裏只是舉個例子

public String replacePlaceholder(String content,Placeholder placeholder){
		if(content.contains("${caseID}")){
			String caseID = placeholder.getCaseID();
			System.out.println(caseID);
			content = content.replace("${caseID}", caseID);
		}
		if(content.contains("${caseNo}")){
			content = content.replace("${caseNo}", placeholder.getCaseNo());
		}
		if(content.contains("${cardNo}")){
			content = content.replace("${cardNo}", placeholder.getCardNo());
		}
		if(content.contains("${cardNoHide}")){
			content = content.replace("${cardNoHide}", placeholder.getCardNoHide());
		}
		if(content.contains("${hideMidCNo}")){
			content = content.replace("${hideMidCNo}", placeholder.getHideMidCNo());
		}
		if(content.contains("${hideMidCNoSix}")){
			content = content.replace("${hideMidCNoSix}", placeholder.getHideMidCNoSix());
		}
		if(content.contains("${cardTailNo}")){
			content = content.replace("${cardTailNo}", placeholder.getCardTailNo());
		}
		if(content.contains("${name}")){
			content = content.replace("${name}", placeholder.getName());
		}
		if(content.contains("${IDNo}")){
			content = content.replace("${IDNo}", placeholder.getIDNo());
		}
		if(content.contains("${IDType}")){
			content = content.replace("${IDType}", placeholder.getIDType());
		}
		if(content.contains("${IDNoHide}")){
			content = content.replace("${IDNoHide}", placeholder.getIDNoHide());
		}
		if(content.contains("${hideMidIDNo}")){
			content = content.replace("${hideMidIDNo}", placeholder.getHideMidIDNo());
		}
		if(content.contains("${hideMidIDNoSix}")){
			content = content.replace("${hideMidIDNoSix}", placeholder.getHideMidIDNoSix());
		}
		if(content.contains("${addr}")){
			content = content.replace("${addr}", placeholder.getAddr());
		}
		if(content.contains("${apply}")){
			content = content.replace("${apply}", placeholder.getApply());
		}
		if(content.contains("${content}")){
			content = content.replace("${content}", placeholder.getContent());
		}
		if(content.contains("${company}")){
			content = content.replace("${company}", placeholder.getCompany());
		}
		if(content.contains("${homeAddr}")){
			content = content.replace("${homeAddr}", placeholder.getHomeAddr());
		}
		if(content.contains("${postCode}")){
			content = content.replace("${postCode}", placeholder.getPostCode());
		}
		if(content.contains("${workAddr}")){
			content = content.replace("${workAddr}", placeholder.getWorkAddr());
		}
		if(content.contains("${wpostCode}")){
			content = content.replace("${wpostCode}", placeholder.getWpostCode());
		}
		if(content.contains("${mailAddr}")){
			content = content.replace("${mailAddr}", placeholder.getMailAddr());
		}
		if(content.contains("${mpostCode}")){
			content = content.replace("${mpostCode}", placeholder.getMpostCode());
		}
		if(content.contains("${regAddr}")){
			content = content.replace("${regAddr}", placeholder.getRegAddr());
		}
		if(content.contains("${regpostCode}")){
			content = content.replace("${regpostCode}", placeholder.getRegpostCode());
		}
		if(content.contains("${contact}")){
			content = content.replace("${contact}", placeholder.getContact());
		}
		if(content.contains("${debt}")){
			content = content.replace("${debt}", placeholder.getDebt());
		}
		if(content.contains("${lastDebt}")){
			content = content.replace("${lastDebt}", placeholder.getLastDebt());
		}
		if(content.contains("${lastDebtEndDate}")){
			content = content.replace("${lastDebtEndDate}", placeholder.getLastDebtEndDate());
		}
		if(content.contains("${lastDebtEndYear}")){
			content = content.replace("${lastDebtEndYear}", placeholder.getLastDebtEndYear());
		}
		if(content.contains("${lastDebtEndMonth}")){
			content = content.replace("${lastDebtEndMonth}", placeholder.getLastDebtEndMonth());
		}
		if(content.contains("${lastDebtEndDay}")){
			content = content.replace("${lastDebtEndDay}", placeholder.getLastDebtEndDay());
		}
		if(content.contains("${aged}")){
			content = content.replace("${aged}", placeholder.getAged());
		}
		if(content.contains("${caseAmt}")){
			content = content.replace("${caseAmt}", placeholder.getCaseAmt());
		}
		if(content.contains("${casePaid}")){
			content = content.replace("${casePaid}", placeholder.getCasePaid());
		}
		if(content.contains("${mCat}")){
			content = content.replace("${mCat}", placeholder.getmCat());
		}
		if(content.contains("${rmb}")){
			content = content.replace("${rmb}", placeholder.getRmb());
		}
		if(content.contains("${usd}")){
			content = content.replace("${usd}", placeholder.getUsd());
		}
		if(content.contains("${hkd}")){
			content = content.replace("${hkd}", placeholder.getHkd());
		}
		if(content.contains("${cdYear}")){
			content = content.replace("${cdYear}", placeholder.getCdYear());
		}
		if(content.contains("${cdMonth}")){
			content = content.replace("${cdMonth}", placeholder.getCdMonth());
		}
		if(content.contains("${cdDay}")){
			content = content.replace("${cdDay}", placeholder.getCdDay());
		}
		if(content.contains("${year}")){
			content = content.replace("${year}", placeholder.getYear());
		}
		if(content.contains("${month}")){
			content = content.replace("${month}", placeholder.getMonth());
		}
		if(content.contains("${day}")){
			content = content.replace("${day}", placeholder.getDay());
		}
		if(content.contains("${payDL}")){
			content = content.replace("${payDL}", placeholder.getPayDL());
		}
		if(content.contains("${credLim}")){
			content = content.replace("${credLim}", placeholder.getCredLim());
		}
		if(content.contains("${account}")){
			content = content.replace("${account}", placeholder.getAccount());
		}
		if(content.contains("${product}")){
			content = content.replace("${product}", placeholder.getProduct());
		}
		if(content.contains("${fileNo}")){
			content = content.replace("${fileNo}", placeholder.getFileNo());
		}
		if(content.contains("${loanDate}")){
			content = content.replace("${loanDate}", placeholder.getLoanDate());
		}
		if(content.contains("${empPhone}")){
			content = content.replace("${empPhone}", placeholder.getEmpPhone());
		}
		if(content.contains("${empMob}")){
			content = content.replace("${empMob}", placeholder.getEmpMob());
		}
		if(content.contains("${empName}")){
			content = content.replace("${empName}", placeholder.getEmpName());
		}
		if(content.contains("${bank}")){
			content = content.replace("${bank}", placeholder.getBank());
		}
		if(content.contains("${overdueNum}")){
			content = content.replace("${overdueNum}", placeholder.getOverdueNum());
		}
		if(content.contains("${insured}")){
			content = content.replace("${insured}", placeholder.getInsured());
		}
		if(content.contains("${overdueDays}")){
			content = content.replace("${overdueDays}", placeholder.getOverdueDays());
		}
		if(content.contains("${paidDate}")){
			content = content.replace("${paidDate}", placeholder.getPaidDate());
		}
		if(content.contains("${pcp}")){
			content = content.replace("${pcp}", placeholder.getPcp());
		}
		if(content.contains("${leftPri}")){
			content = content.replace("${leftPri}", placeholder.getLeftPri());
		}
		if(content.contains("${monthPaid}")){
			content = content.replace("${monthPaid}", placeholder.getMonthPaid());
		}
		if(content.contains("${cardCat}")){
			content = content.replace("${cardCat}", placeholder.getCardCat());
		}
		if(content.contains("${creDate}")){
			content = content.replace("${creDate}", placeholder.getCreDate());
		}
		if(content.contains("${loanEndDate}")){
			content = content.replace("${loanEndDate}", placeholder.getLoanEndDate());
		}
		if(content.contains("${issuer}")){
			content = content.replace("${issuer}", placeholder.getIssuer());
		}
		if(content.contains("${minPaid}")){
			content = content.replace("${minPaid}", placeholder.getMinPaid());
		}
		if(content.contains("${appNo}")){
			content = content.replace("${appNo}", placeholder.getAppNo());
		}
		if(content.contains("${ovdDate}")){
			content = content.replace("${ovdDate}", placeholder.getMinPaid());
		}
		if(content.contains("${paidCount}")){
			content = content.replace("${paidCount}", placeholder.getPaidCount());
		}
		if(content.contains("${remark1}")){
			content = content.replace("${remark1}", placeholder.getRemark1());
		}
		if(content.contains("${remark2}")){
			content = content.replace("${remark2}", placeholder.getRemark2());
		}
		if(content.contains("${remark3}")){
			content = content.replace("${remark3}", placeholder.getRemark3());
		}
		if(content.contains("${remark4}")){
			content = content.replace("${remark4}", placeholder.getRemark4());
		}
		if(content.contains("${remark5}")){
			content = content.replace("${remark5}", placeholder.getRemark5());
		}
		if(content.contains("${remark6}")){
			content = content.replace("${remark6}", placeholder.getRemark6());
		}
		if(content.contains("${mob}")){
			content = content.replace("${mob}", placeholder.getMob());
		}
		if(content.contains("${homePho}")){
			content = content.replace("${homePho}", placeholder.getHomePho());
		}
		if(content.contains("${comPho}")){
			content = content.replace("${comPho}", placeholder.getComPho());
		}
		if(content.contains("${bir}")){
			content = content.replace("${bir}", placeholder.getBir());
		}
		if(content.contains("${sex}")){
			content = content.replace("${sex}", placeholder.getSex());
		}
		if(content.contains("${backDateP}")){
			content = content.replace("${backDateP}", placeholder.getBackDateP());
		}
		return content;
	}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章