代码之家  ›  专栏  ›  技术社区  ›  Koekiebox

interop word-从文档中删除页面

  •  3
  • Koekiebox  · 技术社区  · 15 年前

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

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

    我还看到了范围和部分示例,但使用起来并不优雅。

    谢谢。

    2 回复  |  直到 13 年前
        1
  •  4
  •   Foole    15 年前

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

    或者,尝试与此代码等效的C:

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

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

        2
  •  3
  •   Bradley Smith    15 年前

    你问题的简短答案是没有 优雅的 做你想做的事的方法。

    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;
        }
    }
    
    推荐文章