2017-09-21 3 views
1

テーブルの後にテキストを追加するにはどうすればよいですか?テーブルではなく、その後。 テーブルはdocxファイルにあります。Apache POI単語テーブルの後ろにテキストを追加する最善の方法

ので、例:

  • textA
  • textB
  • textC
  • textD

私は表とtextCの間にいくつかのテキストを追加したいです。 結果:

  • textA
  • textB
  • 挿入された新しいテキスト
  • textC
  • textD

は、私は、次のコードを試してみましたが、それはないの後にテーブルの前に挿入しています。

XmlCursor cursor = table.getCTTbl().newCursor(); 
XWPFParagraph newParagraph = doc.insertNewParagraph(cursor); 
XWPFRun run = newParagraph.createRun(); 
run.setText("inserted new text"); 
+0

表の後に 'XWPFParagraph'を作成し、この段落のテキストを含む' XWPFRun'を作成します。 –

+0

しかし、XWPFParagraphの位置を設定するにはどうすればよいですか?私はこれを試した:XmlCursorカーソル= table.getCTTbl()。newCursor()が、テーブルの前の位置です。 – Zaosz

+0

質問を編集し、使用しているコードを表示してください。また、あなたがしていることについてもっと詳しく説明してください。テーブルはどこから来ますか?どのようにテーブルを手に入れていますか? –

答えて

1

XmlCursorを使用するアプローチは正しいです。このXmlCursorの詳細とリンクされたドキュメントのメソッドを参照してください。

したがって、CTTblの最後にジャンプし、次の要素の開始タグを見つける必要があります。

import java.io.FileOutputStream; 
import java.io.FileInputStream; 

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

public class WordTextAfterTable { 

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

    XWPFDocument document = new XWPFDocument(new FileInputStream("WordTextAfterTable.docx")); 

    XWPFTable table = document.getTableArray(0); 

    org.apache.xmlbeans.XmlCursor cursor = table.getCTTbl().newCursor(); 
    cursor.toEndToken(); //now we are at end of the CTTbl 
    //there always must be a next start token. Either a p or at least sectPr. 
    while(cursor.toNextToken() != org.apache.xmlbeans.XmlCursor.TokenType.START); 
    XWPFParagraph newParagraph = document.insertNewParagraph(cursor); 
    XWPFRun run = newParagraph.createRun(); 
    run.setText("inserted new text"); 

    document.write(new FileOutputStream("WordTextAfterTableNew.docx")); 
    document.close(); 
} 
} 
+0

ありがとうございました。 – Zaosz

関連する問題