首先引入 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;
}