POI XWPF 操作word并操作表格

利用word模板进行操作。


try { 
request.setCharacterEncoding("UTF-8");
       String templateDocx =request.getSession().getServletContext().getRealPath("\\") + "res\\MyTemplate2.docx";
       FileInputStream in = new FileInputStream(templateDocx);
       
       //用自定义解析类获得document
      XWPFDocument document = new XWPFDocument(in);
       
       // replace special string in file
       Map<String,String> map = new HashMap<String,String>();
       map.put("${tableName}", fileName);
            Iterator<XWPFParagraph> itPara = document  
                    .getParagraphsIterator();  
            while (itPara.hasNext()) {  
                XWPFParagraph paragraph = (XWPFParagraph) itPara.next();  
                List<XWPFRun> runs = paragraph.getRuns();  
                for (int i = 0; i < runs.size(); i++) {  
                    String oneparaString = runs.get(i).getText(  
                            runs.get(i).getTextPosition());  
                    for (Map.Entry<String, String> entry : map  
                            .entrySet()) {  
                        oneparaString = oneparaString.replace(  
                                entry.getKey().toString(), entry.getValue().toString());  
                    }  
                    runs.get(i).setText(oneparaString, 0);  
                }  
            } 
       
       
            //add table content
       XWPFTable table ;
       XWPFTableRow row ;
       XWPFTableCell cell ;
       
       // JBXX
       table = document.getTables().get(0);
       table.removeRow(0);
       row = table.createRow();
       cell = row.createCell();
       cell.setText("表格属性");
       cell = row.createCell();
       cell.setText("值");
       for (int i = 0; i < dataCol1.length; i++) {
        row = table.createRow();
        cell = row.getCell(0);
if(null != dataHeader1[i] && dataHeader1[i].toString().length() > 0)
cell.setText(dataHeader1[i].toString());
        cell = row.getCell(1);
        if(null != JBXX.get(dataCol1[i]) && JBXX.get(dataCol1[i]).toString().length() > 0)
        cell.setText(JBXX.get(dataCol1[i]).toString());
}
       
       //ZDXX
       table = document.getTables().get(1);
       table.removeRow(0);
       row = table.createRow();
       for (int i = 0; i < dataCol2.length; i++) {
cell = row.createCell();
if (null != dataHeader2[i] && dataHeader2[i].toString().length() > 0) {
cell.setText(dataHeader2[i].toString());
}
}
       
       Map<String, Object> map2;
      for (int i = 0; i < ZDXX.size() ; i++) {
      row = table.createRow();
      map2 = ZDXX.get(i);
      for (int j = 0; j < dataCol2.length; j++) {
      cell = row.getCell(j);
      if (null != map2.get(dataCol2[j])  && map2.get(dataCol2[j]).toString().length() > 0) {
cell.setText(map2.get(dataCol2[j]).toString() );
}
      }
}

       
       //文件输出流
       OutputStream fos = response.getOutputStream();
       //文件输出相关信息
       String outputFileName = fileName+"_"+ DateUtil.getDate() + ".docx";
       response.setContentType("application/octet-stream");
//        response.setHeader("Content-disposition", "attachment; filename=\""
//                + URLEncoder.encode(outputFileName, "UTF-8") + "\"");
       
       response.setHeader("Content-Disposition", "attachment;filename=" + new String(outputFileName.getBytes("GBK"), "ISO8859_1"));
       
       document.write(fos);
       fos.flush();
       fos.close();
       in.close();
       
       
       } catch (Exception e) {
           e.printStackTrace();  
       }

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值