使用Word Interop库从Document对象中删除特定页面的最简单,最有效的方法是什么?
我注意到有一个Pages属性可以扩展/实现IEnumerable。可以简单地删除数组中的元素,并从文档中删除页面吗?
我也看过Ranges和Section的例子,但使用起来看起来并不优雅。
感谢。
答案 0 :(得分:4)
一种可能的选择是为整个页面添加书签(选择整个页面,转到“工具”|“插入书签”,然后键入名称)。然后,您可以使用Document对象的Bookmarks集合来引用该文本并将其删除。
或者,尝试使用此代码的C#等价物:
Doc.ActiveWindow.Selection.GoTo wdPage, PageNumber
Doc.Bookmarks("\Page").Range.Text = ""
第一行将光标移动到页面“PageNumber”。第二个使用预定义书签,它始终引用光标当前所在的页面,包括页面末尾的分页符(如果存在)。
答案 1 :(得分:3)
对你的问题的简短回答是,没有优雅的方式来做你想要实现的目标。
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;
}
}