Анализирайте таблицата с помощта на 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