2

我有一个单词模板,它有多个相似的表格和一些与放置在它们之前的表格相关联的段落。根据数据量,我填充了一些表,而另一些则不需要,所以有段落。

我的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);
}
4

1 回答 1

5

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

因此,您只需颠倒循环的顺序

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

我已经使用模板对其进行了测试,类似于您的示例,效果很好!希望能帮助到你。

于 2014-07-20T16:59:58.000 回答