Interop Word - 从文档中删除页面

Koe*_*box 3 .net c# interop ms-word

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

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

我也看过 Ranges 和 Section 示例,但使用起来看起来不太优雅。

谢谢。

Bra*_*ith 5

对您的问题的简短回答是,没有优雅的方式来完成您想要实现的目标。

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;
    }
}
Run Code Online (Sandbox Code Playgroud)