Apache POI word在表格后添加文本的最佳方式

时间:2017-09-21 06:51:44

标签: java ms-word apache-poi

在桌子后添加文字的最佳或简短方法是什么?不在表格中但在之后。 该表位于docx文件中。

所以,例如:

  • textA
  • textB
  • textC
  • textD

我想在Table和textC之间添加一些文本。 结果:

  • textA
  • textB
  • 插入新文字
  • textC
  • textD

我尝试了以下代码,但是在表之前没有插入代码。

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

3 个答案:

答案 0 :(得分:2)

使用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();
 }
}

答案 1 :(得分:0)

我只用下面的代码进行了固定

enter image description here

答案 2 :(得分:0)

这对我有用:

                 tablasolicitantecargo = tablafiladoss.getTable();
                 org.apache.xmlbeans.XmlCursor cursor = tablasolicitantecargo.getCTTbl().newCursor();
                 cursor.toEndToken();
                 while(cursor.toNextToken() != org.apache.xmlbeans.XmlCursor.TokenType.START);
                 XWPFParagraph newParagraph = requisicionesaprobadas.insertNewParagraph(cursor);
                 @SuppressWarnings("unused")
                 XWPFRun run = newParagraph.createRun();