java - 刷新XWPF文档更改

标签 java apache-poi xwpf

我需要从文档中删除封面

XWPFDocument document = ...;

if(document.getBodyElements().get(0) instanceof XWPFSDT) {
    document.removeBodyElement(0);
}

调试文档时,XWPFSDT元素已正确删除,但输出封面页仍位于此处。

是否有某种方法可以更新/刷新文档 xml,即使更改是从低级别发生的,我们如何刷新文档以使其保持最新

最佳答案

直到apache poi版本3.17XWPFDocument.removeBodyElement仅正确删除 BodyElementType.TABLEBodyElementType.PARAGRAPH。它缺少CTBody.removeSdt

所以我们必须自己做底层的事情:

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

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

public class WordRemoveCoverPage {

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

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

  if(document.getBodyElements().get(0) instanceof XWPFSDT) {
   System.out.println(document.removeBodyElement(0)); // true == success, but low level <w:sdt> is not removed from the XML
   document.getDocument().getBody().removeSdt(0);
  }

  document.write(new FileOutputStream("WordDocumentWithoutCoverPage.docx"));

  document.close();
 }
}

关于java - 刷新XWPF文档更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50761461/

相关文章:

java - 匹配包含值的数组中的值

java - 无法解析 xwpf

java - 在 Java 中根据 XSD 1.1 验证 XML 时出错

java - 适用于 java 的 azure 管理 sdk 示例

java - 32 位应用程序可以在 Eclipse 中运行,但部署后不能运行。 (没有错误..)

java - XWPF文档 : replace tag with html text

java - Apache POI - 将 Word 文档 (docx) 拆分为页面

java - 从 IntelliJ 在 Windows 资源管理器中打开包含目录

java - 如何禁用默认打字。是否默认禁用

java - 使用 apache poi 和 ooxml-schemas 实现 2 列条形图的最简单方法