java docx4J向word插入内容

运用docx4j,向Word模板中插入内容和表格,生成新的Word文档。(仅使用于word2007及以上版本)

首先:读取Word模板文件流;

[java]  view plain copy
  1. String realpath = request.getServletContext().getRealPath("\\template\\sbxx\\sbsydjb.docx");  
  2.             File file = new File(realpath);  
  3.               


第二步:使用docx4j读入流生成新的文档;

[java]  view plain copy
  1. OpcPackage opcPackage = OpcPackage.load(new FileInputStream(file),"1");  
  2.             WordprocessingMLPackage wordMLPackage = (WordprocessingMLPackage) opcPackage;  


第三步:向docx4生成的文档中写入内容;

[java]  view plain copy
  1. P p = new P();  
  2.         Docx4jUtils.addParaContent(p, "设备编号:"24nullfalsefalse);  
  3.         Docx4jUtils.addParaContent(p, sbbh, 24nulltruefalse);  
  4.         Docx4jUtils.addSpace2Para(p, 3nullnull);//空格  
  5.   
  6.         Docx4jUtils.addParaContent(p, "设备名称:"24nullfalsefalse);  
  7.         Docx4jUtils.addParaContent(p, sbmc, 24nulltruefalse);  
  8.         Docx4jUtils.addSpace2Para(p, 3nullnull);  
  9.   
  10.         Docx4jUtils.addParaContent(p, "型号:"24nullfalsefalse);  
  11.         Docx4jUtils.addParaContent(p, sbxh, 24nulltruefalse);  
  12.         Docx4jUtils.addSpace2Para(p, 3nullnull);  
  13.           
  14.         wordMLPackage.getMainDocumentPart().addObject(p);  


第四步:向docx4生成的文档中写入表格;


[html]  view plain copy
  1. //插入表格  
  2.             Tbl table = Context.getWmlObjectFactory().createTbl();  
  3.           
  4.             // 给表格加上边框  
  5.             Docx4jUtils.addBorders(table);  
  6.   
  7.             // 初始化表头  
  8.             ObjectFactory factory1 = Context.getWmlObjectFactory();  
  9.             Tr tableRow1 = factory1.createTr();  
  10.             Docx4jUtils.addTableCell(wordMLPackage, tableRow1, "name");  
  11.             table.getContent().add(tableRow1);  
  12.               
  13.             for(int i=0;i<lists.size();i++){  
  14.               
  15.                 ObjectFactory factory = Context.getWmlObjectFactory();  
  16.                 Tr tableRow = factory.createTr();  
  17.                 Docx4jUtils.addTableCell(wordMLPackage, tableRow, "value");  
  18.                   
  19.                 table.getContent().add(tableRow);  
  20.             }  
  21.             // 设置单元格对其方式  
  22.             Docx4jUtils.setTblAlign(table);  
  23.             Docx4jUtils.addObjectForTbl(wordMLPackage, table);  



最后:保存成docx格式文档;

[html]  view plain copy
  1. // 设置单元格对其方式  
  2.             Docx4jUtils.setTblAlign(table);  
  3.             Docx4jUtils.addObjectForTbl(wordMLPackage, table);  
  4.             //保存成Word  
  5.             String folderpath = request.getServletContext().getRealPath("\\downloadfile\\");  
  6.             String savepath = request.getServletContext().getRealPath("\\downloadfile\\test.docx");  
  7.             File f = new File(folderpath);  
  8.             if(!f.exists()){  
  9.                 f.mkdirs();  
  10.             }  
  11.             wordMLPackage.save(new java.io.File(savepath));  

你可能感兴趣的:(java)