Leer desde el documento de Word línea por línea

Intento leer un documento de Word usando C #. Puedo obtener todo el texto pero quiero poder leer línea por línea y almacenarlo en una lista y enlazarlo a una vista en cuadrícula . Actualmente, mi código devuelve una lista de un solo artículo con todo el texto (no línea por línea, como se desea). Estoy usando la biblioteca Microsoft.Office.Interop.Word para leer el archivo. A continuación está mi código hasta ahora:

Application word = new Application(); Document doc = new Document(); object fileName = path; // Define an object to pass to the API for missing parameters object missing = System.Type.Missing; doc = word.Documents.Open(ref fileName, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing); String read = string.Empty; List data = new List(); foreach (Range tmpRange in doc.StoryRanges) { //read += tmpRange.Text + "
"; data.Add(tmpRange.Text); } ((_Document)doc).Close(); ((_Application)word).Quit(); GridView1.DataSource = data; GridView1.DataBind();

De acuerdo. Encontré la solución aquí .

El código final es el siguiente:

  Application word = new Application(); Document doc = new Document(); object fileName = path; // Define an object to pass to the API for missing parameters object missing = System.Type.Missing; doc = word.Documents.Open(ref fileName, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing); String read = string.Empty; List data = new List(); for (int i = 0; i < doc.Paragraphs.Count; i++) { string temp = doc.Paragraphs[i + 1].Range.Text.Trim(); if (temp != string.Empty) data.Add(temp); } ((_Document)doc).Close(); ((_Application)word).Quit(); GridView1.DataSource = data; GridView1.DataBind(); 

El código anterior es correcto, pero es demasiado lento. He mejorado el código, y es mucho más rápido que el anterior.

 List data = new List(); Application app = new Application(); Document doc = app.Documents.Open(ref readFromPath); foreach (Paragraph objParagraph in doc.Paragraphs) data.Add(objParagraph.Range.Text.Trim()); ((_Document)doc).Close(); ((_Application)app).Quit(); 

¿Qué tal este yo? Obtenga todas las palabras del documento y divídalas en devolución o lo que sea mejor para usted. Luego pasa a la lista

  List lines = doc.Content.Text.Split('\n').ToList();