Чтение из текстового документа по строкам


Я пытаюсь читать документ с использованием С#. Я могу получить весь текст, но я хочу, чтобы читать строку за строкой и хранить в списке и привязывать к gridview. В настоящее время мой код возвращает список одного элемента только со всем текстом (не по строке). Для чтения файла я использую библиотеку Microsoft.Office.Interop.Word. Ниже мой код до сих пор:

    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<string> data = new List<string>();
    foreach (Range tmpRange in doc.StoryRanges)
    {
        //read += tmpRange.Text + "<br>";
        data.Add(tmpRange.Text);
    }
    ((_Document)doc).Close();
    ((_Application)word).Quit();

    GridView1.DataSource = data;
    GridView1.DataBind();

Ответ 1

Ok. Я нашел решение здесь.


Конечный код выглядит следующим образом:

    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<string> data = new List<string>();
    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();

Ответ 2

Вышеприведенный код верен, но он слишком медленный. Я улучшил код, и он намного быстрее, чем предыдущий.

List<string> data = new List<string>();
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();

Ответ 3

Как насчет этого лет. Получите все слова из документа и разделите их на возвращение или что-то еще лучше для вас. Затем перейдите в список

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