2021年1月5日 星期二

JAVA - POI動態生成目錄清單

因為從word一開始都是動態產生
所以處理方式比較迂迴
使用方式為:
  1. 產生xml doc檔案
  2. 轉成標準docx檔案
  3. 使用POI產生目錄

代碼如下,參考網址
        private void generateTOC(XWPFDocument document) {
String findText = "#p3";
String replaceText = "";
for (XWPFParagraph p : document.getParagraphs()) {
for (XWPFRun r : p.getRuns()) {
int pos = r.getTextPosition();
String text = r.getText(pos);
if (text != null && text.contains(findText)) {
text = text.replace(findText, replaceText);
r.setText(text, 0);
addField(p, "TOC \\o \"1-3\" \\h \\z \\u");
break;
}
}
}
}

private void addField(XWPFParagraph paragraph, String fieldName) {
CTSimpleField ctSimpleField = paragraph.getCTP().addNewFldSimple();
ctSimpleField.setInstr(fieldName);
ctSimpleField.setDirty(STOnOff.TRUE);
ctSimpleField.addNewR().addNewT().setStringValue("<<fieldName>>");
}

沒有留言:

張貼留言