如何使用c#根据页面范围提取Docx页面

时间:2014-04-26 06:54:41

标签: c# docx

您好请帮助根据页面范围(如2 - 4或10 - 15)从docx文件中提取页面。我是 使用提到,但它没有正确提取,请纠正我需要更改代码的地方。

public void docx( string path,int pageStart,int pageend)
 {
var app = new Application();
  app.Visible = true;
  var doc = app.Documents.Open(path);
  //This Range object will contain each page.
      var page = doc.Range(pageStart, pageend);
      if (pageStart < pageend)
      {

          page.End = page.GoTo(What: WdGoToItem.wdGoToPage, Which: WdGoToDirection.wdGoToAbsolute, Count: pageStart + pageend).Start - pageStart;


      }
      else
      {
          page.End = doc.Range().End;
      }
      //Copy and paste the contents of the Range into a new document
      page.Copy();
      var doc2 = app.Documents.Add();
      doc2.Range().Paste();
} 

1 个答案:

答案 0 :(得分:1)

这对我有用

var range = doc.Range();
range.Start = doc.GoTo(WdGoToItem.wdGoToPage, WdGoToDirection.wdGoToAbsolute, pageStart).Start;

if (pageend < doc.ComputeStatistics(WdStatistic.wdStatisticPages, false))
{
    range.End = doc.GoTo(WdGoToItem.wdGoToPage, WdGoToDirection.wdGoToAbsolute, pageend + 1).End - 1;
}

range.Copy();

新范围选择整个文档,因此其End已经是文档的结尾。根据您需要的起始页面的开头设置开始。结束设置为页面的开头(pageend + 1),减去1个字符(返回)。这将把我们带到页面末页。只有当pageend不是最后一页时才会这样做。

我们可以在范围初始化中使用它,但这将使代码不可读。