Lotus на практике. Экспорт данных из View в Excel? (Lotus Script)

О чем этот текст?

Практически все системы, которые выводят табличную информацию, обязательно комплектуются возможностью экспорта в Excel. А если у тебя на Lotus построен Helpdesk, то руководство заинтересовано в получении отчетов разнообразных. Причем чаще всего в Excel. Чтобы можно было диаграммы построить. Предлагаемое решение, не строит графиков, но данные из View экспортирует в Excel. А построить график по готовым данным - две минуты. Вобщем, готовься к премии.

Основная часть

Dim ViewString As String
Dim session As NotesSession
Dim db As NotesDatabase
Dim v As NotesView
Dim docX As NotesDocument
Dim row As Double
Dim xl As Variant
Dim xlWbk As Variant
Set session = New notessession
Set db=session.CurrentDatabase

ViewString="Секретные документы"
Set v=db.GetView(ViewString)

' Создадим объект Excel
Set xl=CreateObject("Excel.Application")
' Создадим книгу Excel
Set xlWbk=xl.Workbooks.Add
'Работаем с Лист1(Sheet1), активным по умолчанию



'вывод Excel

'Вывод названия выгрузки
xlWbk.ActiveSheet.Cells(2, 1).RowHeight=30
xlWbk.ActiveSheet.Range("A2").HorizontalAlignment = -4108
xlWbk.ActiveSheet.Cells(2, 1)="Отчет о статусах документов"
xlWbk.ActiveSheet.Range("A2:H2").Merge

numberrow%=1

row=5


xlWbk.ActiveSheet.Cells(5, 1)="№ п/п"
xlWbk.ActiveSheet.Cells(5, 1).Borders.LineStyle = 1
xlWbk.ActiveSheet.Cells(5, 1).Font.Bold=True


xlWbk.ActiveSheet.Cells(5, 2)="Дата поступления"
xlWbk.ActiveSheet.Cells(5, 2).Borders.LineStyle = 1
xlWbk.ActiveSheet.Cells(5, 2).Font.Bold=True

xlWbk.ActiveSheet.Cells(5, 3)="Наименование"
xlWbk.ActiveSheet.Cells(5, 3).Borders.LineStyle = 1
xlWbk.ActiveSheet.Cells(5, 3).Font.Bold=True

xlWbk.ActiveSheet.Cells(5, 4)="Степень секретности"
xlWbk.ActiveSheet.Cells(5, 4).Borders.LineStyle = 1
xlWbk.ActiveSheet.Cells(5, 4).Font.Bold=True

'Ширина столбцов и установка флага переноса по словам в ячейке
xlWbk.ActiveSheet.columns(2).ColumnWidth=15
xlWbk.ActiveSheet.Cells(row, 2).WrapText = True
xlWbk.ActiveSheet.columns(3).ColumnWidth=15
xlWbk.ActiveSheet.Cells(row, 3).WrapText = True
xlWbk.ActiveSheet.columns(4).ColumnWidth=15
xlWbk.ActiveSheet.Cells(row, 4).WrapText = True


'выравнивание по верху, типа xlTop
xlWbk.ActiveSheet.Cells(row, 1).VerticalAlignment = -4160
xlWbk.ActiveSheet.Cells(row, 2).VerticalAlignment = -4160
xlWbk.ActiveSheet.Cells(row, 3).VerticalAlignment = -4160
xlWbk.ActiveSheet.Cells(row, 4).VerticalAlignment = -4160

'встаем на первый документ из вьюхи
Set docX=v.GetFirstDocument

'переходим на строчку ниже для вывода данных
row=row+1

'Пробегаем все документы из вью
While Not docX Is Nothing


'Бордюр вокруг ячеек
xlWbk.ActiveSheet.Cells(row,1).Borders.LineStyle = 1
xlWbk.ActiveSheet.Cells(row,2).Borders.LineStyle = 1
xlWbk.ActiveSheet.Cells(row,3).Borders.LineStyle = 1
xlWbk.ActiveSheet.Cells(row,4).Borders.LineStyle = 1

'Вывод информации в Excel
'Формат ячейки - текстовый, чтобы номера можно было отображать вида 0001
xlWbk.ActiveSheet.Cells(row, 1).NumberFormat="@"
'Номер п/п
xlWbk.ActiveSheet.Cells(row, 1)=numberrow%
'Дата поступления
xlWbk.ActiveSheet.Cells(row, 2)=docx.fDate(0)
'Наименование
xlWbk.ActiveSheet.Cells(row, 3)=docx.fName(0)
'Степень секретности
xlWbk.ActiveSheet.Cells(row, 4)=docx.fState(0)

'Увеличили счетчик первого столбца
numberrow%=numberrow%+1

'Применяем форматирование как у заголовков столбцов
xlWbk.ActiveSheet.Cells(row, 1).VerticalAlignment = -4160
xlWbk.ActiveSheet.Cells(row, 2).VerticalAlignment = -4160
xlWbk.ActiveSheet.Cells(row, 3).VerticalAlignment = -4160
xlWbk.ActiveSheet.Cells(row, 4).VerticalAlignment = -4160

xlWbk.ActiveSheet.columns(2).ColumnWidth=15
xlWbk.ActiveSheet.Cells(row, 2).WrapText = True
xlWbk.ActiveSheet.columns(3).ColumnWidth=15
xlWbk.ActiveSheet.Cells(row, 3).WrapText = True
xlWbk.ActiveSheet.columns(4).ColumnWidth=15
xlWbk.ActiveSheet.Cells(row, 4).WrapText = True
xlWbk.ActiveSheet.columns(5).ColumnWidth=20

row=row + 1

'Переходим к новому документу
Set docX=v.GetNextDocument(docX)
'Выводим счетчик, чтобы точно понять когда зависли и скоро ли overflow
Print row
Wend

'Если нужно выровнять столбец автоматически по ширине, то
' xlWbk.ActiveSheet.Columns(1).AutoFit
' xlWbk.ActiveSheet.Columns(2).AutoFit
' xlWbk.ActiveSheet.Columns(3).AutoFit
' xlWbk.ActiveSheet.Columns(4).AutoFit
'Но мне это ни к чему, я задал жестко ширину столбцов

'Выводим получившийся Excel файл на экран
xl.Visible=True

Автор: Joe1000




Ссылки:

К содержанию

© Copyright 2004-2017 - CMS Made Simple
Сайт работает на CMS Made Simple version 1.4.1

© Все печеньки Break-people.ru принадлежат авторам проекта.

Яндекс цитирования Рейтинг@Mail.ru Яндекс.Метрика