Как получить текст по страницам из файла Word (.Docx) с помощью Microsoft.Office.Interop.Word в С#

я хочу извлечь текст из файла .DOCX по страницам, используя Microsoft.Office.Interop.Word в С#.

в настоящее время я получаю весь текст файла по методу, как указано ниже, но я хочу, чтобы он постранично, так как я могу это сделать

public void ImportWordFile()
    {

        object path = @"C:\Users\Vipin\Desktop\test.docx";

        Microsoft.Office.Interop.Word.Application word = new Microsoft.Office.Interop.Word.Application();
        object miss = System.Reflection.Missing.Value;
        object readOnly = true;
        Microsoft.Office.Interop.Word.Document docs = word.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);
        string totaltext = "";
        for (int i = 0; i < docs.Paragraphs.Count; i++)
        {
            totaltext += " \r\n " + docs.Paragraphs[i + 1].Range.Text.ToString();
        }
        var numberOfPages = docs.ComputeStatistics(Word.WdStatistic.wdStatisticPages, false);
        Debug.Write("WordFileText = " + numberOfPages);
        docs.Close();
        word.Quit();



    }

person Neeraj Mehta    schedule 25.03.2015    source источник
comment
Какое это имеет отношение к aps.net-mvc?   -  person    schedule 25.03.2015


Ответы (1)


Проблема в том, что Word на самом деле не работает со страницами, поэтому количество страниц должно быть «вычислено» в первую очередь (в основном Word запрашивает принтер).

Тем не менее, это может работать где-то в следующем небольшом коде:

for(int i = 1;i<= numberOfPages; i++)
        {
            var pageRange = docs.Range()
                .GoTo(Microsoft.Office.Interop.Word.WdGoToItem.wdGoToPage,
                    Microsoft.Office.Interop.Word.WdGoToDirection.wdGoToAbsolute, i);
            //do your magic
        }

Надеюсь это поможет.

person LocEngineer    schedule 25.03.2015
comment
Так же, как и раньше. вы можете просмотреть абзацы pageRange, чтобы получить все абзацы/текст/все, что содержится на этой самой странице. Таким образом, вместо того, чтобы перебирать docs.Paragraphs, вы можете перебирать а) страницы (это цикл for) б) pageRange.Paragraphs (новый цикл делает вашу магию) - person LocEngineer; 25.03.2015
comment
Это не сработало для меня. При использовании pageRange.Paragraphs это даст мне только первый абзац. При использовании pageRange.Words это даст мне только первое слово. Этот вопрос решил мою проблему: stackoverflow.com/questions/28987095 /get-pages-of-word-document - person zeta; 04.11.2016