Здравствуйте! Сегодня: Чт, 20 Июн 2019, Ваш IP: 18.215.161.19 Войти через loginza
 
Вход | Регистрация | Забыли пароль?
Мой Kbyte.Ru
> Список форумов Kbyte.Ru - - Общие вопросы программирования
+ Создать новую тему Страница: 1
Тема: Вставка таблицы из DataGrid в Word · +  +  дата добавления: 10.03.2015 / 11:21
Автор темы:
email333333
email333333
тем: 16 / ответов: 30 / благодарностей: 0 / репутация: 2
ответов: 30
создал(а) тем: 16


Как можно таблицу из DataGried поместить в документ MS Word?
Технологии: Visual Basic .NET
 
Ответ # 1 # · +  +  дата добавления: 10.03.2015 / 18:20
Автор ответа:
Алексей Немиро
Алексей Немиро
тем: 534 / ответов: 5130 / благодарностей: 325 / репутация: 211
Чашка Kbyte.Ru>>
Url: aleksey.nemiro.ru
Icq: 261779681
Skype: alekseynemiro
ответов: 5130
создал(а) тем: 534


Программно создать таблицу в документе и перенести данные из DataGridView:
Dim word As Word.Application
Dim doc As Word.Document
word = CreateObject("Word.Application")
word.Visible = True
doc = word.Documents.Add("g:\123.docx")

'добавляем таблицу в документ
Dim tableLocation As Word.Range = doc.Range(Start:=0, End:=0)
'RowCount + 1 - одна строка для названий колонок
doc.Tables.Add(Range:=tableLocation, NumRows:=DataGridView1.RowCount + 1, NumColumns:=DataGridView1.ColumnCount)

'стили таблицы
doc.Tables.Item(1).Borders.OutsideColor = Microsoft.Office.Interop.Word.WdColor.wdColorBlack
doc.Tables.Item(1).Borders.OutsideLineStyle = Microsoft.Office.Interop.Word.WdLineStyle.wdLineStyleSingle
doc.Tables.Item(1).Borders.OutsideLineWidth = Microsoft.Office.Interop.Word.WdLineWidth.wdLineWidth100pt
doc.Tables.Item(1).Borders.InsideColor = Microsoft.Office.Interop.Word.WdColor.wdColorBlack
doc.Tables.Item(1).Borders.InsideLineStyle = Microsoft.Office.Interop.Word.WdLineStyle.wdLineStyleSingle
doc.Tables.Item(1).Borders.InsideLineWidth = Microsoft.Office.Interop.Word.WdLineWidth.wdLineWidth100pt

'шляпа
For i As Integer = 0 To DataGridView1.ColumnCount - 1
  doc.Tables.Item(1).Rows(1).Cells(i + 1).Range.Text = DataGridView1.Columns(i).HeaderText
Next

'переносим данные
For i As Integer = 0 To DataGridView1.RowCount - 1 'строки
  For j As Integer = 0 To DataGridView1.ColumnCount - 1 'колонки
    'если данных нет, пропускаем
    If DataGridView1.Rows(i).Cells(j).Value Is Nothing Then Continue For
    'помещаем данные в ячейку
    'i + 2, т.к. первая строка использовалась для названий колонок
    'отсчет с 1
    doc.Tables.Item(1).Rows(i + 2).Cells(j + 1).Range.Text = DataGridView1.Rows(i).Cells(j).Value.ToString()
  Next
Next
 
Ответ # 2 # · +  +  дата добавления: 11.03.2015 / 10:20
Автор ответа:
email333333
email333333
тем: 16 / ответов: 30 / благодарностей: 0 / репутация: 2
ответов: 30
создал(а) тем: 16


А как правильно заменить текст закладки этой таблицей?
Когда я пытаюсь поместить таблицу на место закладки datagried_content у меня почему-то таблица оказывается в самом начале документа.
 
Ответ # 3 # · +  +  дата добавления: 11.03.2015 / 12:07
Автор ответа:
Алексей Немиро
Алексей Немиро
тем: 534 / ответов: 5130 / благодарностей: 325 / репутация: 211
Чашка Kbyte.Ru>>
Url: aleksey.nemiro.ru
Icq: 261779681
Skype: alekseynemiro
ответов: 5130
создал(а) тем: 534


Координаты в Start и End указываются:
Dim tableLocation As Word.Range = doc.Range(Start:=0, End:=0)
Это номер символа, с которого следует делать вывод таблицы в документ.

Например: doc.Range(Start:=5) - вывод с пятого символа.

Можно найти метку в документе и вставить таблицу на её место:
'ищем метку в документе
Dim FindObject As Word.Find = word.ActiveWindow.Selection.Find
With FindObject
  .ClearFormatting()
  .Text = "{Table}" 'найти в документе строку {Table}
  .Execute()
End With

'добавляем таблицу в документ
Dim tableLocation As Word.Range = doc.Range(Start:=word.Selection.Start, End:=word.Selection.Start + "{Table}".Length)
 
Ответ # 4 # · +  +  дата добавления: 11.03.2015 / 14:44
Автор ответа:
email333333
email333333
тем: 16 / ответов: 30 / благодарностей: 0 / репутация: 2
ответов: 30
создал(а) тем: 16


Понял,спасибо.
 
Страница: 1 + Создать новую тему