Экспорт в Word

Тема в разделе "Lotus - Программирование", создана пользователем vincent_vega, 4 апр 2005.

  1. vincent_vega

    vincent_vega Lotus team
    Lotus team

    Регистрация:
    2 апр 2005
    Сообщения:
    165
    Симпатии:
    1
    Подскажите как сделать экспорт в Word. У меня есть представление в котором хранятся почтовые адреса. Необходимо их все экспортировать в ворд. Как это сделать? Буду благодарен за примеры кода:D
     
  2. Guest_

    Guest_ Гость

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

    Код (Text):
    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
     
  3. Гость

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

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

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

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

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

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

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

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

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

    Domino6 Гость

    <!--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. Выделенные документы будут печататься по твоей форме
     
  6. Domino6

    Domino6 Гость

    <!--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.
     

    Вложения:

    • Label.zip
      Размер файла:
      43,5 КБ
      Просмотров:
      135
Загрузка...

Поделиться этой страницей