2017-11-08 34 views
0

XWPF 워드 문서에서 책갈피를 읽고 편집/대체하는 데 사용되는 예제가 많이 있습니다. 하지만 문서를 만들고 새 북마크를 만들고 싶습니다. 문서를 작성하지 - 문제 :java poi XWPF 단어 - 새 문서에 북마크 만들기

private void createWordDoc() throws IOException { 
    XWPFDocument document = new XWPFDocument(); 
    File tempDocFile = new File(pathName+"\\temp.docx"); 
    FileOutputStream out = new FileOutputStream(tempDocFile); 
    XWPFParagraph paragraph = document.createParagraph(); 
    XWPFRun run = paragraph.createRun(); 
    run.setText("testing string "); 
    document.write(out); 
    out.close(); 
    } 

가 어떻게 텍스트 "테스트 문자열"에 책갈피를 만들 수 를?

답변

2

지금까지는 apache poi의 상위 수준 클래스에는 구현되어 있지 않습니다. 따라서 낮은 레벨 CTPCTBookmark이 필요합니다.

예 :

import java.io.FileOutputStream; 

import org.apache.poi.xwpf.usermodel.*; 

import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTBookmark; 

import java.math.BigInteger; 

public class CreateWordBookmark { 

public static void main(String[] args) throws Exception { 

    XWPFDocument document = new XWPFDocument(); 

    XWPFParagraph paragraph = document.createParagraph(); 

    //bookmark before the run 
    CTBookmark bookmark = paragraph.getCTP().addNewBookmarkStart(); 
    bookmark.setName("before_testing_string"); 
    bookmark.setId(BigInteger.valueOf(0)); 
    paragraph.getCTP().addNewBookmarkEnd().setId(BigInteger.valueOf(0)); 

    //bookmark the run 
    bookmark = paragraph.getCTP().addNewBookmarkStart(); 
    bookmark.setName("testing_string"); 
    bookmark.setId(BigInteger.valueOf(1)); 

    XWPFRun run = paragraph.createRun(); 
    run.setText("testing string "); 

    paragraph.getCTP().addNewBookmarkEnd().setId(BigInteger.valueOf(1)); 

    //bookmark after the run 
    bookmark = paragraph.getCTP().addNewBookmarkStart(); 
    bookmark.setName("after_testing_string"); 
    bookmark.setId(BigInteger.valueOf(2)); 
    paragraph.getCTP().addNewBookmarkEnd().setId(BigInteger.valueOf(2)); 

    document.write(new FileOutputStream("CreateWordBookmark.docx")); 
    document.close(); 

} 
}