powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Загрузка таблицы из документа MS Word в datagridview
9 сообщений из 9, страница 1 из 1
Загрузка таблицы из документа MS Word в datagridview
    #39512084
Spartak19
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток!
Подскажите где проблема, импортируются значения таблицы из 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
Загрузка таблицы из документа MS Word в datagridview
    #39512092
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
создается массив:
Код: vbnet
1.
Dim row(table.Columns.Count) As String

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

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

А ячейкам строк dataTable хто будет присваивать значения?
...
Рейтинг: 0 / 0
Загрузка таблицы из документа MS Word в datagridview
    #39512134
Spartak19
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Barkan,
Первая строка в гриде заполняется, 2 и последующие нет
...
Рейтинг: 0 / 0
Загрузка таблицы из документа MS Word в datagridview
    #39512150
Barkan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Загрузка таблицы из документа MS Word в datagridview
    #39512781
Spartak19
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Barkan,
У меня полчилось то что все данные выгружаются в одну строку грида, пока проблему не решил
...
Рейтинг: 0 / 0
Загрузка таблицы из документа MS Word в datagridview
    #39513115
Barkan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
9 сообщений из 9, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Загрузка таблицы из документа MS Word в datagridview
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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