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

искам да извлека текст от .DOCX файл по страница с помощта на Microsoft.Office.Interop.Word в C#.

в момента получавам целия текст на файла по метода, както е посочен по-долу, но го искам страница по страница, така че как мога да направя това

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, можете да преминавате през a) страниците (това for цикъл) b) 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