【问题标题】:Get page by name or by number interop Word按名称或按编号互操作 Word 获取页面
【发布时间】:2017-06-08 08:19:35
【问题描述】:

我正在尝试通过名称或编号访问 Word 中的页面。我以为我的方向是正确的,但似乎没有 page.namepage.number 属性。问题出在我的if 语句中,我试图说明是否有一个名为Page 4 Content 的页面,然后选择它。

    var wordApplication = (word.Application)System.Runtime.InteropServices.Marshal.GetActiveObject("Word.Application");
    string path = CommonMethods.getFile(fileName);

    myDoc = wordApplication.Documents.Open(path);
    wordApplication.Visible = true;
    wordApplication.WindowState = word.WdWindowState.wdWindowStateMaximize;


    word.Pages pages = myDoc.ActiveWindow.ActivePane.Pages;

    foreach (word.Page p in pages )
    {
        if (p.)
        {

        }
    }

【问题讨论】:

  • 我假设pages 有一个page 对象的集合(列表或数组?)。如果是这样,您应该能够通过使用它的索引来访问特定的页码;例如类似pages.Item[0]
  • @T_Bacon pages 是我尝试做类似for (int i = 0; i < pages.Count; i++) { pages[i]; } 的集合但是它会导致错误。我想做这样的事情pages[i].select,但没有名为 select 的属性
  • 是的,但是您需要使用Pages 对象的Item 属性从集合中返回特定对象。因此,正如我在上面的评论中一样,您应该使用pages.Item[i] 来获取您所追求的特定页面对象。但是,查看文档,我不认为 Page 对象提供任何 Select 功能。看起来您需要为此使用Range。见stackoverflow.com/questions/11806763/…

标签: c#


【解决方案1】:

正如您已经提到的,页面对象上没有 numbername 属性。

为了获取页码,您必须访问该页面上RangeSelection 对象的Information 属性。

除此之外,我建议阅读 Shauna Kelly 的文章Selecting or referring to a page in the Word object model。在她的文章中,她详细解释了为什么依靠页面对象进行自动化文档处理通常不是一个好主意。原因是 Word 使用流式布局而不是固定布局。为了确定当前的页面呈现,Word 必须与当前的打印机驱动程序对话。这意味着您的分页符可能会因您的打印机而异。

【讨论】:

    【解决方案2】:

    我最终做了以下事情,它就像一个魅力。

            object What = Microsoft.Office.Interop.Word.WdGoToItem.wdGoToPage;
            object Which = Microsoft.Office.Interop.Word.WdGoToDirection.wdGoToAbsolute;
            object Miss = System.Reflection.Missing.Value;
            word.Pages pages = doc.ActiveWindow.ActivePane.Pages;
    
            for (int i = 0; i < pages.Count; i++)
            {
    
                if (i == pageNumber)
                {
                    doc.Application.Selection.GoTo(ref What, ref Which, pageNumber, ref Miss);
                }
    
    
    
            }
        }
    

    【讨论】:

      猜你喜欢
      • 2013-01-25
      • 2023-02-12
      • 1970-01-01
      • 2018-07-29
      • 1970-01-01
      • 2015-12-05
      • 1970-01-01
      • 2014-03-14
      • 2014-04-11
      相关资源
      最近更新 更多