【问题标题】:How to get page number?如何获取页码?
【发布时间】:2016-11-05 06:47:58
【问题描述】:

我有这个代码:

Microsoft.Office.Interop.Word.Application app = new Microsoft.Office.Interop.Word.Application();
object nullobj = System.Reflection.Missing.Value;
object file = openFileDialog1.FileName;
Microsoft.Office.Interop.Word.Document doc = app.Documents.Open(
  ref file, ref nullobj, ref nullobj,
  ref nullobj, ref nullobj, ref nullobj,
  ref nullobj, ref nullobj, ref nullobj,
  ref nullobj, ref nullobj, ref nullobj,
  ref nullobj, ref nullobj, ref nullobj);
doc.ActiveWindow.Selection.WholeStory();
doc.ActiveWindow.Selection.Copy();
IDataObject data = Clipboard.GetDataObject();
string text = data.GetData(DataFormats.Text).ToString();
textBox2.Text = text;
doc.Close(ref nullobj, ref nullobj, ref nullobj);
app.Quit(ref nullobj, ref nullobj, ref nullobj);

但它不返回页码。如何获取页码?

【问题讨论】:

    标签: c# interop


    【解决方案1】:

    我会说这是一个更好的解决方案

    Microsoft.Office.Interop.Word.Application app = new Microsoft.Office.Interop.Word.Application();
    object nullobj = System.Reflection.Missing.Value;
    object file = openFileDialog1.FileName;
    Microsoft.Office.Interop.Word.Document doc = app.Documents.Open(
      ref file, ref nullobj, ref nullobj,
      ref nullobj, ref nullobj, ref nullobj,
      ref nullobj, ref nullobj, ref nullobj,
      ref nullobj, ref nullobj, ref nullobj,
      ref nullobj, ref nullobj, ref nullobj);
    doc.ActiveWindow.Selection.WholeStory();
    doc.ActiveWindow.Selection.Copy();
    IDataObject data = Clipboard.GetDataObject();
    
    // get number of pages
    Microsoft.Office.Interop.Word.WdStatistic stat = Microsoft.Office.Interop.Word.WdStatistic.wdStatisticPages;
    int pages = doc.ComputeStatistics(stat, Type.Missing);
    
    string text = data.GetData(DataFormats.Text).ToString();
    textBox2.Text = text;
    doc.Close(ref nullobj, ref nullobj, ref nullobj);
    app.Quit(ref nullobj, ref nullobj, ref nullobj);
    

    【讨论】:

      【解决方案2】:

      看这个例子:

      http://www.c-sharpcorner.com/UploadFile/amrish_deep/WordAutomation05102007223934PM/WordAutomation.aspx

      具体看Word.WdFieldType.wdFieldPageWord.WdFieldType.wdFieldNumPages

      【讨论】:

      • 如果它在此处包含答案的基本部分,这将是一个更好的答案,并提供链接以供参考。如果链接页面发生更改,仅链接的答案可能会失效。
      【解决方案3】:

      对我来说,ComputeStatistics 函数会给我一个比实际页数更高的数字,所以这对我不起作用。

      我使用了 range.get_Information()

      var range = doc.Range().GoTo(WdGoToItem.wdGoToPage, WdGoToDirection.wdGoToLast);
      var numPages = range.get_Information(WdInformation.wdActiveEndPageNumber);
      

      第一行获取文档最后一页的范围。 第二行获取范围所在的页面。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-04-01
        • 2017-09-07
        • 1970-01-01
        • 2018-01-09
        • 2014-07-06
        • 2018-08-05
        • 2022-12-14
        相关资源
        最近更新 更多