java poi XWPF word - 在新文档中创建书签

标签 java ms-word apache-poi bookmarks xwpf

XWPF Word 文档中存在许多读取和编辑/替换书签的示例。 但我想创建一个文档并创建新书签。 创建文档 - 没问题:

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

如何在文本“测试字符串”上创建书签?

最佳答案

到目前为止,这还没有在 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();

 }
}

关于java poi XWPF word - 在新文档中创建书签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47182971/

相关文章:

java - 如何使用 RangeCellAddress 通过 POI 解锁单元格?

java - 制作 : Nothing to be done for 'makefile'

c++ - 在 C++ 中读取 .docx

vba - 当单元格值变化时如何获取msgbox excel vba

vba - Word VBA 字体。如果选择在表中并且选择很大,则隐藏属性变得不可读

Java POI 最后的 CellStyle 覆盖以前的 CellStyles

java - 将 java.util.stream.Stream<String> 转换为 java.io.Reader

java - 为Android游戏创建 "stick controls"?

用于 Robust Statistics 的 Java 统计包

java - 在apache poi中使用for循环