Экспорт в Word

02.04.2005
170
1
#1
Подскажите как сделать экспорт в Word. У меня есть представление в котором хранятся почтовые адреса. Необходимо их все экспортировать в ворд. Как это сделать? Буду благодарен за примеры кода:D
 
G

Guest_

#2
Лучше наверное в эксель
пример кода вот:, тока без комментариев практически.

Код:
Sub Click(Source As Button)

Set xlApp = createObject("Excel.Application") 'создаем объект Excel
Set xlWB = xlApp.Workbooks.Add 'создаем новую книгу
Set xlSheet = xlWB.Sheets(1) ' выбираем первую "страницу"
xlApp.visible = True ' делаем объект видимым

xlSheet.name = "Каталог оборудования"
'задаем размеры и парамеры колонок
xlSheet.Columns(1).Columnwidth = 15
xlSheet.Columns(2).Columnwidth = 27
xlSheet.Columns(3).Columnwidth = 65
xlSheet.Columns(4).Columnwidth = 10
xlSheet.Columns(1).font.size=8
xlSheet.Columns(1).font.bold = True
xlSheet.Columns(2).font.size=8
xlSheet.Columns(3).font.size=8
xlSheet.Columns(4).font.size=8
'Заголовок окна

'создали объект -- нужно наполнить:
Dim session As New NotesSession
Dim db As NotesDatabase
Dim view As NotesView
Dim doc As NotesDocument

Set db = session.CurrentDatabase
Set view = db.GetView("viewEquipmentInfoByCategory")

fldCategoryMarker = "" ' обнуляем маркер категории
CurrentRow = 1 'значение текущей строчки выставляем на 1

Set doc = view.GetFirstDocument
Do While Not (doc Is Nothing)
'читаем значимые поля из документа
fldCategory = doc.fldCategory(0)
fldManufacturerName = doc.fldManufacturerName(0)
fldProductName = doc.fldProductName(0)
fldDescriptionBrief = doc.fldDescriptionBrief(0)
fldCost = doc.fldCost(0)
fldCurrencyType = doc.fldCurrencyType(0)
If fldCategory <> fldCategoryMarker Then
'сменилась категория, создаем строчку, красим, объединяем ячейки...
fldCategoryMarker = fldCategory
xlSheet.cells(CurrentRow,1) = fldCategory
Marker = 1

xlSheet.Range(xlSheet.Cells(CurrentRow,1),xlSheet.Cells(CurrentRow,4)).merge
xlSheet.Cells(CurrentRow,1).font.size = 10
xlSheet.Cells(CurrentRow,1).font.bold = True
xlSheet.Cells(CurrentRow,1).font.color=16777215

xlSheet.Range(xlSheet.Cells(CurrentRow,1),xlSheet.Cells(CurrentRow,1)).Select
xlSheet.Range(xlSheet.Cells(CurrentRow,1),xlSheet.Cells(CurrentRow,1)).Interior.color = 8421504
' 	Selection.pattern = 1
' 	selection.patterncolorindex = 0


CurrentRow = CurrentRow + 1
End If

'заносим в строчку значения из документа
xlSheet.Cells(CurrentRow,1) = fldManufacturerName
xlSheet.Cells(CurrentRow,2) = fldProductName
xlSheet.Cells(CurrentRow,3) = fldDescriptionBrief

Dim leftS, RightS As Integer

If fldCurrencyType = "0" Then
Cost = Cdbl(fldCost)
leftS = Int(Cost)
rightS = Int((Cost-leftS)*100)
fldCost2Post = Cstr(leftS)+","+Right("0"+Cstr(rightS),2)+" р."

Else
Cost = Cdbl(fldCost)
leftS = Int(Cost)
rightS = Int((Cost-leftS)*100)
fldCost2Post = Cstr(leftS)+","+Right("0"+Cstr(rightS),2)+" у.е."
End If

xlSheet.Cells(CurrentRow,4) = fldCost2Post
'меняем выравнивания вертикальные в соотв. ячейках (и горизонтальные)
xlSheet.Range(xlSheet.Cells(CurrentRow,1),xlSheet.Cells(CurrentRow,4)).VerticalAlignment = 1
xlSheet.Range(xlSheet.Cells(CurrentRow,4),xlSheet.Cells(CurrentRow,4)).HorizontalAlignment = 4
'красим четные ячейки в немножко серый цвет: 239:239:239
If Marker/2 = Int(Marker/2) Then
xlSheet.Range(xlSheet.Cells(CurrentRow,1),xlSheet.Cells(CurrentRow,4)).Select
xlSheet.Range(xlSheet.Cells(CurrentRow,1),xlSheet.Cells(CurrentRow,4)).Interior.colorindex = 35
End If


Marker = Marker + 1
CurrentRow = CurrentRow +1

'читаем следующий документ
Set doc = view.GetNextDocument(doc)
Loop

'делаем аутофит двум первым колонкам
xlSheet.Columns(1).autofit
xlSheet.Columns(2).autofit

'делаем соответствующие выравнивания 3 колонке (описание)
xlSheet.Columns(3).wraptext=True

'выделение жирной рамочкой всего документа
'	xlSheet.Range(xlSheet.Cells(1,1),xlSheet.Cells(Currentrow - 1,1)).Interior.BorderStyle = 5





End Sub
 
G

Guest

#3
В ворд - в РТФ можно.
Примера кода под рукой нет, логику расскажу:
1. Открываете файл с шаблоном документа в формате РТФ и считываете его как строку
2. В самом шаблоне в том месте, куда хотите вставлять значения экспортируемые из нотес, пишите что-нибудь типа
<$................$> вместо точек - ставите формулу, котоорая будет потом эвалюироваться.
3. Когда при считывании строки с РТФ файлом потом находите строку для подстановки - вычленяете формулу, эвалюируете и делаете реплайс на посчитанное значение.
4. Строку с подставленными значениями пишите в файл.

Формат РТФ довольно тривиален, поэтому например при работе со списками - то есть когда в формулу берется не строка, а список строк - можно использовать разделители, которые обозначают перевод строки самого РТФ формата, сейчас точно не помню как они пишутся - откройте любой РТФ файл и посмотрите глазами в текстовом редакторе - там легко понять какие теги что обозначают.

Будут проблемы с русскими буквами, если в формуле участвуют строки с русскими буквами - помню, что возилась с этим, там при считывании получаются коды в формате операционки (не уникоды), их просто надо обратно преобразовать.

Теперь пример:
у меня есть РТФ документ, колонтитулы, логотип компании и все такое, в середине пишу "РЕЗЮМЕ <$Fistname + @if(middleInitial!="";" "+middleinitial;"")+" "+lastname$>"
теперь когда я открываю этот шаблон из кода как файл и читаю из него строки, то в одной из строк я найду мою формулу и сделаю ее evaluate на том документе (например резюме кандидата), на котором мне надо, потом результат подставлю в строку вместо формулы. Вобщем идея тривиальна.

У меня есть также библиотека, которая делает аналогичные подстановки в эксель, тоже делается шаблон в экселе с формулами в ячейках (можно кстати в <$$> в качестве одного из параметров писать на каком документе эвалюировать формулу, типа <$formula::contragentdoc$>). Код проходит по ячейкам и поставляет в них все что надо. Этот подход избавляет от необходимости писать кастомный код для каждого конкретного экспорта.
 
G

Guest

#4
Я так понимаю, что речь идет о задаче печати конвертов из лотуса.

Есть вот какие способы достучаться к данным:
1. Выводишь в Excel программно (скорость низкая будет и гибкости мало)
2. Выводишь в Excel или в Access через экспорт в Comma Separated текстовый файл, а потом импорт текстового файла в Excel (гибкость, скорость, но руками)
3. Настраиваешь ODBC доступ к Lotus (знания нужны)

Теперь можно формировать конверты путем слияния (почитай ХЕЛП к WORD-у)
в качестве поставщика/источника Данных выступает либо сам лотус (SQL-запрос через DSN ODBC), либо файл Excel (просто как файл Excel).

Расставляешь поля по конверту и все в шоколаде :blink:
Удачи.
 
D

Domino6

#5
<!--QuoteBegin-Доброжелатель+12:10:2005, 19:03 -->
<span class="vbquote">(Доброжелатель @ 12:10:2005, 19:03 )</span><!--QuoteEBegin-->Я так понимаю, что речь идет о задаче печати конвертов из лотуса.
[snapback]25758" rel="nofollow" target="_blank[/snapback]​
[/quote]

Если вопрос в печати конвертов то тогда

1.сделай форму для печати к примеру назови PRNLETER
2. В виде выдели документы
3. Затем печать
4. В настройках печати "Печатать по форме"(выбери PRNLETER) "Разделитель новая страница"
5. Выделенные документы будут печататься по твоей форме
 
D

Domino6

#6
<!--QuoteBegin-vincent_vega+4:04:2005, 12:36 -->
<span class="vbquote">(vincent_vega @ 4:04:2005, 12:36 )</span><!--QuoteEBegin-->Подскажите как сделать экспорт в Word.
[snapback]18151" rel="nofollow" target="_blank[/snapback]​
[/quote]

LabelIT! print labels from a view using MS-WinWord


This sample shows how to use Lotus Notes in combination with MS-Word to print labels.

The content of the label can be configured via an configuration document.


Sandbox sample submitted by LDD User.
 

Вложения

  • 43.5 КБ Просмотры: 135