使用POI创建Word文件

时间:2012-05-30 14:08:26

标签: java apache ms-word apache-poi

我的要求是我应该读取模板文件并更改其内容中的某些值并将其写回另一个文件。最重要的是,它应该具有与模板相同的样式。

我面临的问题是我能够阅读和书写,但也很难转移样式。特别是我厌倦了尝试将段落样式应用于文档。请帮助我.....这是我的代码

  public static void main(String[] args) {
    try {
          HWPFDocument templateFile = new HWPFDocument(new FileInputStream("D:\\POI\\testPOIin.doc"));
          HWPFDocument blankFile = new HWPFDocument(new FileInputStream("D:\\POI\\blank.doc"));

        ParagraphProperties pp = templateFile.getRange().getParagraph(4).cloneProperties();
        blankFile.getRange().insertAfter(pp, 0);
        OutputStream out = new FileOutputStream("D:\\POI\\testPOIout.doc");
        blankFile.write(out);

      } catch (FileNotFoundException fnfe) {
          // TODO: Add catch code
          fnfe.printStackTrace();
      } catch (Exception ioe) {
          // TODO: Add catch code
          ioe.printStackTrace();
      }
  }
}

请告诉我,我做错了.....

1 个答案:

答案 0 :(得分:0)

我也有类似的任务,经过调查我创建了解决方案,但它只适用于docx文件:

public static void main(String[] args) throws Exception {
    FileOutputStream fos = new FileOutputStream(new File("transformed.docx"));
    XWPFDocument doc = new XWPFDocument(new FileInputStream(new File("original.docx")));
    for(XWPFParagraph p:doc.getParagraphs()){
        for(XWPFRun r:p.getRuns()){
            for(CTText ct:r.getCTR().getTList()){
                String str = ct.getStringValue();
                if(str.contains("NAME")){
                    str = str.replace("NAME", "Java Dev");
                    ct.setStringValue(str);
                }
            }
        }
    }
    doc.write(fos);
}

它在低级元素上运行,因此它可以保存样式和其他道具。希望它会对某人有所帮助。