Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Загрузка таблицы из документа MS Word в datagridview / 9 сообщений из 9, страница 1 из 1
29.08.2017, 11:13
    #39512084
Spartak19
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Загрузка таблицы из документа MS Word в datagridview
Доброго времени суток!
Подскажите где проблема, импортируются значения таблицы из MS Word в datagridview, но в грид загружается только первая строка таблицы, а нужны все. Код ниже
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
Dim dialog As New OpenFileDialog()
        dialog.Filter = "MS Word 2003 (*.doc)|*.doc|MS Word 2010 (*.docx)|*.docx"
        dialog.Title = "Выберите документ для загрузки данных"
        If dialog.ShowDialog() = System.Windows.Forms.DialogResult.OK Then
            TextBox1.Text = dialog.FileName
            Dim application As New Word.Application()
            Dim FileName As [Object] = dialog.FileName
            application.Documents.Open(FileName)
            Dim document As Word.Document = application.ActiveDocument
            Dim table As Word.Table = document.Tables(1)
            If (table.Rows.Count > 0 And table.Columns.Count > 0) Then
                Dim headers As New List(Of String)
                Dim dataTable As New DataTable()
                For i As Integer = 0 To table.Columns.Count - 1
                    dataTable.Columns.Add()
                    headers.Add(table.Cell(1, i + 1).Range.Text.Trim(ChrW(7), ControlChars.Cr, ControlChars.Lf, ControlChars.Tab))
                Next
                For i As Integer = 0 To table.Rows.Count - 1
                    dataTable.Rows.Add()
                    Dim row(table.Columns.Count) As String
                    For j As Integer = 0 To table.Columns.Count - 1
                        row(j) = table.Cell(i + 2, j + 1).Range.Text.Trim(ChrW(7), ControlChars.Cr, ControlChars.Lf, ControlChars.Tab)
                    Next
                Next
                DataGridView1.DataSource = dataTable
                For i As Integer = 0 To table.Columns.Count - 1
                    DataGridView1.Columns(i).HeaderText = headers(i)
                Next
                application.Quit()
            End If
        End If
...
Рейтинг: 0 / 0
29.08.2017, 11:32
    #39512092
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Загрузка таблицы из документа MS Word в datagridview
создается массив:
Код: vbnet
1.
Dim row(table.Columns.Count) As String

заполняется в цикле
Код: c#
1.
row(j) = table.Cell(i + 2, j + 1)....

и...... всё на этом!
...
Рейтинг: 0 / 0
29.08.2017, 11:43
    #39512099
Spartak19
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Загрузка таблицы из документа MS Word в datagridview
Убрать цикл?
...
Рейтинг: 0 / 0
29.08.2017, 12:01
    #39512116
Spartak19
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Загрузка таблицы из документа MS Word в datagridview
Shocker.Pro,
Не совсем понял что не так, убрал вроде, а результат тот же
...
Рейтинг: 0 / 0
29.08.2017, 12:09
    #39512124
Barkan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Загрузка таблицы из документа MS Word в datagridview
Spartak19,

А ячейкам строк dataTable хто будет присваивать значения?
...
Рейтинг: 0 / 0
29.08.2017, 12:15
    #39512134
Spartak19
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Загрузка таблицы из документа MS Word в datagridview
Barkan,
Первая строка в гриде заполняется, 2 и последующие нет
...
Рейтинг: 0 / 0
29.08.2017, 12:34
    #39512150
Barkan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Загрузка таблицы из документа MS Word в datagridview
Spartak19,

Я не вижу чтобы и первая заполнялась.
Смотрю на код и вижу dataTable с количеством ПУСТЫХ строк равным количеству строк table.
А вот зачем заполняется массив row - не понятно, в пустоту!

Для заполнения dataTable "ручками" надо инициализировать его строки, примерно так:

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
Dim DR As DataRow
For i = 0 To table.Columns.Count - 1
   DR = dataTable.NewRow()
   DR.Item(0) = i
   DR.Item(1) = i.ToString()
   dataTable.Rows.Add(DR)
Next
...
Рейтинг: 0 / 0
30.08.2017, 13:32
    #39512781
Spartak19
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Загрузка таблицы из документа MS Word в datagridview
Barkan,
У меня полчилось то что все данные выгружаются в одну строку грида, пока проблему не решил
...
Рейтинг: 0 / 0
31.08.2017, 06:57
    #39513115
Barkan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Загрузка таблицы из документа MS Word в datagridview
Spartak19,

Ну вот попробуй примерно так (код писал не в студии, мог очепататься):

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
Dim DR As DataRow
For i As Integer = 0 To table.Rows.Count - 1
   DR = dataTable.NewRow()
   For j As Integer = 0 To table.Columns.Count - 1
      DR.Item(j) = table.Cell(i + 2, j + 1).Range.Text.Trim(ChrW(7), ControlChars.Cr, ControlChars.Lf, ControlChars.Tab)
   Next
   dataTable.Rows.Add(DR)
Next
DataGridView1.DataSource = dataTable
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Загрузка таблицы из документа MS Word в datagridview / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]