2016年10月13日 星期四

apache poi create docx XWPFDocument

最近寫了poi 應用 的docx...
就整理一下
(docx 的 lib 比 doc 的好很多,doc比半殘還可憐orz...後來直接放棄,就只用docx就好)

建立 docx,寫出檔案

FileInputStream fis = new FileInputStream(templateFile);
XWPFDocument docx = new XWPFDocument(fis);

//... do something what u want

FileOutputStream out = new FileOutputStream(outFile);
docx.write(out);
 
如果不用讀 template 的話,就是直接 new XWPFDocument()
 
 
最基本的找內文取代文字
   前者是找 平 的內容
   後者是找 table 內符合的內容 
            for (XWPFParagraph p : docx.getParagraphs()) {
                List<XWPFRun> runs = p.getRuns();
                if (runs != null) {
                    for (XWPFRun r : runs) {
                        String text = r.getText(0);
                        if (text != null && text.indexOf(param.getFind()) >= 0  ) {
                            text = StringUtils.replace(text,  param.getFind(), param.getReplace());
                            r.setText(text, 0);
                        }
                    }
                }
            }
            for (XWPFTable tbl : docx.getTables()) {
                for (XWPFTableRow row : tbl.getRows()) {
                    for (XWPFTableCell cell : row.getTableCells()) {
                        for (XWPFParagraph p : cell.getParagraphs()) {
                            for (XWPFRun r : p.getRuns()) {
                                String text = r.getText(0);
                                if (text != null && text.indexOf(param.getFind()) >= 0) {
                                    text = StringUtils.replace(text,  param.getFind(), param.getReplace());
                                    r.setText(text, 0);
                                }
                            }
                        }
                    }
                }
            }

沒有留言: