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