Interop Word – 从文档中删除页面

使用Word Interop库从Document对象中删除特定页面的最简单,最有效的方法是什么?

我注意到有一个Pages属性可以扩展/实现IEnumerable。 可以简单地删除数组中的元素,并从文档中删除页面吗?

我也看过Ranges和Section的例子,但使用起来看起来并不优雅。

谢谢。

一种可能的选择是为整个页面添加书签(选择整个页面,转到“工具”|“插入书签”,然后键入名称)。 然后,您可以使用Document对象的Bookmarks集合来引用该文本并将其删除。

或者,尝试此代码的C#等价物:

Doc.ActiveWindow.Selection.GoTo wdPage, PageNumber Doc.Bookmarks("\Page").Range.Text = "" 

第一行将光标移动到页面“PageNumber”。 第二个使用预定义书签,它始终引用光标当前所在的页面,包括页面末尾的分页符(如果存在)。

对你的问题的简短回答是没有优雅的方法去做你想要实现的目标。

Word大大地将文档内容与其布局分开。 就Word而言,文档没有页面; 相反,页面是通过以某种方式查看文档(例如打印视图)从文档派生的内容。 Pages集合属于Pane界面(例如,由Application.ActiveWindow.ActivePane访问),它控制布局。 因此, Page上没有允许您更改(或删除)导致页面存在的内容的方法。

如果您可以控制在代码中处理的文档,我建议您在文档中定义代表要以编程方式删除的部分的部分。 节是一个更好的结构,因为它们代表内容,而不是布局(一个节可能反过来包含分页符)。 如果您这样做,您可以使用以下代码删除特定部分:

 object missing = Type.Missing; foreach (Microsoft.Office.Interop.Word.Section section in doc.Sections) { if (/* some criteria */) { section.Range.Delete(ref missing, ref missing); break; } }