2017-11-08 39 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(); 

} 
} 
関連する問題