Страница: 1 |
Есть Word'овский шаблон в который будут вставляться данные из БД. В самом шаблоне места для вставки определенных полей обозначены как %001, %002, %003 и т.д. Побывав на многих сайтах о VB я так и не нашел ничего подобного. А ведь такой метод очень удобен для смены вида отчета не переписывая код. Достаточно переместить %001 в другое место отчета и усё будет в порядке. Я бы давно успокоился по этому поводу если бы точно знал, что это не возможно. Но такой метод вывода отчета в Word я встретил в одной проге написанной на VB6. Пожайлуста помогите разобраться в этой проблеме.
Страница: 1 |
Вопрос: Вывод отчетов Word
Добавлено: 21.10.03 12:59
Автор вопроса:
Hunter2003 | ICQ: 287314254
Ответы
Всего ответов: 1
Номер ответа: 1
Автор ответа: Павел
Администратор
ICQ: 326066673
Вопросов: 368
Ответов: 5968
Web-сайт:
Профиль | | #1
Добавлено: 21.10.03 14:32
Я так делал (примерно так), код немного кривоват...
Private Sub CreateOpis()
Dim Wrd As New Word.Application
Dim Doc As Word.Document
Dim DocMain As Word.Document
Dim temp As Integer
Dim i As Integer
Dim j As Integer
Dim item As DataRow
If Dir(System.AppDomain.CurrentDomain.BaseDirectory & "opis.tpl.doc") <> "" Then
Kill(System.AppDomain.CurrentDomain.BaseDirectory & "opis.tpl.doc")
End If
FileCopy(System.AppDomain.CurrentDomain.BaseDirectory & "opis.tpl", System.AppDomain.CurrentDomain.BaseDirectory & "opis.tpl.doc")
DocMain = Wrd.Documents.Add(, , , False)
Doc = Wrd.Documents.Open(System.AppDomain.CurrentDomain.BaseDirectory & "opis.tpl", , , , , , , , , , , False)
Doc.Activate()
Wrd.Selection.WholeStory()
Clipboard.SetDataObject("")
Wrd.Selection.Copy()
Wrd.ActiveWindow.Close()
DocMain.Activate()
For i = 0 To dsOrders.Tables(0).Rows.Count - 1
If GridOrders.IsSelected(i) = True Then
j = j + 1
item = GetRow(GridOrders, i)
Wrd.Selection.EndKey(Word.WdUnits.wdStory)
Wrd.Selection.Paste()
'Wrd.Selection.TypeBackspace()
Wrd.Selection.WholeStory()
With Wrd.Selection.Find
.Replacement.ClearFormatting()
.Text = "[Title]"
.Execute(Replace:=Word.WdReplace.wdReplaceAll)
.Text = "[Name]"
.Replacement.Text = item.Item("Name").ToString & ""
.Execute(Replace:=Word.WdReplace.wdReplaceAll)
'...
End With
End If
Next
Wrd.Visible = True
End Sub
Это код на .NET, тут создаётся новый документ Word, состоящий из
ряда однотипных форм. Шаблон - opis.tpl. Собственно, всё заключается в
том, что последовательно в цикле в конец документа добавляется текст
шаблона и проводится замена переменных [Name], [Title] и т.д.
соответствующими значениями.