Разобрать таблицу с помощью Microsoft.Office.Interop.Word, получить только текст из первого столбца?

Я работаю над написанием программы, которая будет анализировать текстовые данные из документа Microsoft Word 2010. В частности, я хочу получить текст из каждой ячейки в первом столбце каждой таблицы в документе.

Для справки, документ выглядит так: введите здесь описание изображения

Мне нужен только текст из ячеек в первом столбце на каждой странице. Я собираюсь добавить этот текст во внутреннюю таблицу данных.

Мой код пока выглядит так:

private void button1_Click(object sender, EventArgs e)
    {
        // Create an instance of the Open File Dialog Box
        var openFileDialog1 = new OpenFileDialog();

        // Set filter options and filter index
        openFileDialog1.Filter = "Word Documents (.docx)|*.docx|All files (*.*)|*.*";
        openFileDialog1.FilterIndex = 1;
        openFileDialog1.Multiselect = false;

        // Call the ShowDialog method to show the dialog box.
        openFileDialog1.ShowDialog();
        txtDocument.Text = openFileDialog1.FileName;

        var word = new Microsoft.Office.Interop.Word.Application();
        object miss = System.Reflection.Missing.Value;
        object path = openFileDialog1.FileName;
        object readOnly = true;
        var 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);

        // Datatable to store text from Word doc
        var dt = new System.Data.DataTable();
        dt.Columns.Add("Text");

        // Loop through each table in the document, 
        // grab only text from cells in the first column
        // in each table.
        foreach (Table tb in docs.Tables)
        {
            // insert code here to get text from cells in first column
            // and insert into datatable.
        }

        ((_Document)docs).Close();
        ((_Application)word).Quit();
    }

Я застрял в той части, где я беру текст из каждой ячейки и добавляю его в свою таблицу данных. Может ли кто-нибудь предложить мне несколько указателей? Я был бы очень признателен.

Спасибо!


person Kevin    schedule 22.07.2013    source источник


Ответы (1)


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

foreach (Table tb in docs.Tables) {
    for (int row = 1; row <= tb.Rows.Count; row++) {
        var cell = tb.Cell(row, 1);
        var text = cell.Range.Text;

        // text now contains the content of the cell.
    }
}
person JLe    schedule 22.07.2013