什么是使用Word Interop库从Document对象中删除特定页面的最简单和最有效的方法?Interop Word - 从文档中删除页面
我注意到有一个页面属性扩展/实现IEnumerable。是否可以简单地删除数组中的元素,并将页面从文档中删除?
我也看到了范围和部分的例子,但看起来不太优雅使用。
谢谢。
什么是使用Word Interop库从Document对象中删除特定页面的最简单和最有效的方法?Interop Word - 从文档中删除页面
我注意到有一个页面属性扩展/实现IEnumerable。是否可以简单地删除数组中的元素,并将页面从文档中删除?
我也看到了范围和部分的例子,但看起来不太优雅使用。
谢谢。
一个可能的选择是书签,全部页数(选择整个页面,转到工具|插入书签然后键入一个名字)。然后,您可以使用Document对象的书签集合来引用文本并将其删除。
或者,尝试C#等效此代码的:
Doc.ActiveWindow.Selection.GoTo wdPage, PageNumber
Doc.Bookmarks("\Page").Range.Text = ""
第一行的光标移动到网页 “的PageNumber”。第二个使用预定义书签,它总是指光标当前所在的页面,如果存在,则包括页面末尾的分页符。
您的问题的简短答案是,没有优雅方式来做你想要实现的。
单词严重地将文档的内容与其布局分离。就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;
}
}
如果由于Word文档可能具有不同的布局/视图,Microsoft不使用页面,这是有道理的。我只是希望有一种比使用范围更简单的方法。 – Koekiebox 2010-09-21 07:03:43
我知道它不使用Interop,但这些人有上面的一些很好的库:http://www.aspose.com/categories/java-components/default.aspx – Koekiebox 2010-09-30 08:04:24