C#Word互读阅读问题

时间:2017-10-24 15:15:22

标签: c# ms-word interop

我有一个Interop问题,我无法解决......

我正在尝试逐页阅读和存储Word文档。问题中的文档包含一个运行超过2页的表。在阅读此表时,整个表正在被读取并存储为单个页面(两次)。我想要实现的是在页面x上有一半的表,在页面y上有另一半。

    List<string> pages = new List<string>();

    Microsoft.Office.Interop.Word.Application word1 = new Microsoft.Office.Interop.Word.Application();
    object miss = System.Reflection.Missing.Value;
    object objSaveOption = WdSaveOptions.wdDoNotSaveChanges;
    object readOnly = true;
    object includeFootnotesAndEndnotes = true;
    object path = @"C:\FileLocation";
    WdStatistic stat1 = WdStatistic.wdStatisticPages;

    Microsoft.Office.Interop.Word.Document docs = word1.Documents.Open(ref path, ref miss, ref readOnly, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss);
    int numberOfPages = docs.ComputeStatistics(stat1, ref miss);    // Gets the number of pages
    var document1 = word1.ActiveDocument;

    for (int i = 0; i < numberOfPages; i++)
    {
        document1.ActiveWindow.Selection           // Go to page "i"
       .GoTo(WdGoToItem.wdGoToPage, WdGoToDirection.wdGoToAbsolute, i, miss);


        document1.ActiveWindow.Selection           // Select whole page
       .GoTo(WdGoToItem.wdGoToBookmark, miss, miss, "\\page").Copy();

        pages.Add(Clipboard.GetText());
    }


    docs.Close(ref objSaveOption);
    word1.Quit();

我已将问题缩小到这两个陈述。当我转到页面&#39; i&#39;时,有没有办法只选择存储在该页面上的信息,而不是流入下一页的信息?

非常感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

我认为部分问题可能与此部分有关

for (int i = 0; i < numberOfPages; i++)

如果您将代码更改为

,MsWord中的页面从1开始(它们不是基于0)
for (int i = 1; i <= numberOfPages; i++)

这样它将从第1页到最后一页。有可能该问题得到解决。

使用当前代码,您将迭代第0页(将返回第1页)和第1页,并跳过最后一页。