Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Вывод отчетов Word Добавлено: 21.10.03 12:59  

Автор вопроса:  Hunter2003 | ICQ: 287314254 

Есть Word'овский шаблон в который будут вставляться данные из

БД. В самом шаблоне места для вставки определенных полей обозначены

как %001, %002, %003 и т.д. Побывав на многих сайтах о VB я так и не

нашел ничего подобного. А ведь такой метод очень удобен для смены вида

отчета не переписывая код. Достаточно переместить %001 в другое место

отчета и усё будет в порядке. Я бы давно успокоился по этому поводу

если бы точно знал, что это не возможно. Но такой метод вывода отчета

в Word я встретил в одной проге написанной на VB6. Пожайлуста помогите

разобраться в этой проблеме.

Ответить

  Ответы Всего ответов: 1  

Номер ответа: 1
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #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] и т.д.
соответствующими значениями.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам