gpt4 book ai didi

apache-poi - 如何使用apache poi从java中的docx中删除包含数据的表格和段落

转载 作者:行者123 更新时间:2023-12-02 04:36:04 36 4
gpt4 key购买 nike

我有一个 word 模板,它有多个相似的表格和一些与放在它们前面的表格相关联的段落。根据数据量,我填充了一些表格,其他表格不需要,所以有段落。

my_img

我需要删除这些表格和段落。如图所示,我需要删除表 2 及其段落 Table Parahgraph

请帮我看看怎么做。我尝试使用 document.removeBodyElement(pos) ,但没有帮助。

int startIndex = 0;
int endIndex = 0;
startIndex = doc.getPosOfTable(doc.getTables().get(0));
startIndex++;
endIndex = doc.getPosOfTable(doc.getTables().get(1));
System.out.println("startIndex "+ startIndex);
System.out.println("endIndex "+ endIndex);

for(int i=startIndex; i<=endIndex; i++){
doc.removeBodyElement(i);
}

最佳答案

问题在于使用 removeBodyElement 移动其余元素并重新计算它们的索引。这意味着,如果你想删除元素#4 到#6(包括两个表之间的空段落),那么在删除元素#4(空行)之后,你的第二个 TABLE(而不是它的标题段落)将变为元素 #5 等。基本上,此循环变为跳转 两个 元素(i+=2 而不是 i++),从而删除只删除你想要的一半,甚至删除你不想删除的东西。

因此,您只需反转循环的顺序:

for ( int i = endIndex; i >= startIndex; i-- ) {
System.out.println( "removing bodyElement #" + i );
document.removeBodyElement( i );
}

我已经使用模板对其进行了测试,类似于您的示例,它工作正常!希望对您有所帮助。

关于apache-poi - 如何使用apache poi从java中的docx中删除包含数据的表格和段落,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21968813/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com