Форум программистов, компьютерный форум, киберфорум
HCL Notes: Программирование
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.96/71: Рейтинг темы: голосов - 71, средняя оценка - 4.96
0 / 0 / 0
Регистрация: 26.11.2011
Сообщений: 69

Lotus + Openoffce На Linux И Win

05.01.2012, 08:57. Показов 13266. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В общем, необходимо написать CLASS по работе с OpenOffice(OO) для формирования отчета на стороне сервера, я уже начал писать и написал пока для Win, но хотелось бы сделать его кросс платформенным. В общем нужна Ваша помощь в его написании :lovecodeby:
Вот то что я уже написал

LotusScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
%REM
Class Name: Open Office Calc
Created: 29.12.2011
%END REM
Public Class OO_Calc
Private Obj As Variant
Private ObjServiceManager As Variant
Private ObjCoreReflection As Variant
Private ObjDesktop As Variant
Private Sheet As Variant
Private RangeObj As Variant
Private Session As NotesSession
Private NoArgs() As Variant
Private pLastError As String
Private pLastErrorLine As Integer
Private pLastErrorCode As Integer
 
Public Property Set Value(Pos As String) As String
Call SetValue(Pos, Value)
End Property
 
Public Property Get LastError As Variant
LastError = pLastError
End Property
 
Public Property Get LastErrorCode As Variant
LastErrorCode = pLastErrorCode
End Property
 
Public Property Get LastErrorLine As Variant
pLastErrorLine = pLastErrorLine
End Property
 
Public Property Get Range As Variant
Set Range = RangeObj
End Property
 
Create Objects
Public Sub New()
On Error GoTo ERRLINE
Set Session = New NotesSession
Set ObjServiceManager = CreateObject("com.sun.star.ServiceManager")
Set ObjCoreReflection = objServiceManager.createInstance("com.sun.star.reflection.CoreReflection")
Set ObjDesktop = objServiceManager.createInstance("com.sun.star.frame.Desktop")
 
Set Obj = objDesktop.loadComponentFromURL("private:factory/scalc", "_blank", 0, NoArgs)
 
End If
 
EXT_:
Exit Sub
ERRLINE:
pLastError = Error$
pLastErrorLine = Erl
pLastErrorCode = Err
MsgBox "Ошибка: " & Error$ & " line: " & Erl,16,"Class: Open Office Calc"
Resume EXT_
End Sub
 
Public Function Sheets(index) As Variant
On Error GoTo ERRLINE
Dim Res(1) As String
 
If IsNumeric(Index) Then
Set Sheet = Obj.getSheets().getByIndex(Index)
Else
Set Sheet = Obj.getSheets().getByName(Index)
End If
 
Res(0) = "1"
Res(1) = ""
EXT_:
SetSheets = Res
Exit Function
ERRLINE:
Res(0) = "0"
Res(1) = "SetSheets - Code: " & CStr(Err) & " Text: " & Error$ & " Line: " & CStr(Erl)
Print Res(1)
pLastError = Error$
pLastErrorLine = Erl
pLastErrorCode = Err
Resume EXT_
End Function
 
convert To URL For WIN
Private Function ConvertToUrl(strFile) As String
strFile = Replace(strFile, "\", "/")
strFile = Replace(strFile, ":", "|")
strFile = Replace(strFile, " ", "%20")
strFile = "file:///" + strFile
ConvertToUrl = strFile
End Function
 
Save Doc
Public Function Save(Path) As Boolean
On Error GoTo err_
Dim aNoArgs()
If Path = "" Then
Path = "C:\" & CStr(Date)
Path = Replace(Path, ".", "_")
Path = Path + ".ods"
End If
Call Obj.storeToURL(ConvertToUrl(Path), aNoArgs)
Save = True
ext_:
Exit Function
err_:
Save = False
pLastError = Error$
pLastErrorLine = Erl
pLastErrorCode = Err
Resume ext_
End Function
 
SetValue
Private Sub SetValue(Pos, Value As String)
On Error Resume Next
Dim xy
If CStr(Pos)="" Then Error 5000, {Param Range is empty}
xy = Split(Pos, ":")
If UBound(xy) <> 1 Then Error 5001, {Param Range is error}
 
ForAll x In xy
If Not IsNumeric(x) Then Error 5002, {Param Range is not numeric: } & x
End ForAll
 
If Sheet Is Nothyng Then Error 5003, {Param Sheet is nothyng}
Call Sheet.getCellByPosition(xy(0), xy(1)).setString(Value)
Exit sub
ERRLINE:
Print "SetValue - Code: " & CStr(Err) & " Text: " & Error$ & " Line: " & CStr(Erl)
pLastError = Error$
pLastErrorLine = Erl
pLastErrorCode = Err
Resume Next
End Sub
 
Select Range
Public Sub SetRange(Pos)
On Error Resume Next
fPos = Split(Pos, ":")
Set RangeObj = Sheet.getCellRangeByPosition(fPos(0), fPos(1), fPos(2), fPos(3))
End Sub
 
Border Line
Public Function CellBorderLine(nColor, nInnerLineWidth, nOuterLineWidth, nLineDistance) As Variant
On Error GoTo ERRLINE
Dim oSM As Variant
Dim oBorderLine As Variant
Set oSM = CreateObject("com.sun.star.ServiceManager")
Set oBorderLine = oSM.Bridge_GetStruct("com.sun.star.table.BorderLine")
 
With oBorderLine
.Color = nColor
.InnerLineWidth = nInnerLineWidth
.OuterLineWidth = nOuterLineWidth
.LineDistance = nLineDistance
End With
 
Set CellBorderLine = oBorderLine
 
ERRLINE:
Print "CellBorderLine - Code: " & CStr(Err) & " Text: " & Error$ & " Line: " & CStr(Erl)
pLastError = Error$
pLastErrorLine = Erl
pLastErrorCode = Err
Resume Next
End Function
 
All Border Make
Public Sub Border(nColor, nInnerLineWidth, nOuterLineWidth, nLineDistance)
Set RangeObj.TopBorder      = CellBorderLine(nColor, nInnerLineWidth, nOuterLineWidth, nLineDistance)
Set RangeObj.RightBorder    = CellBorderLine(nColor, nInnerLineWidth, nOuterLineWidth, nLineDistance)
Set RangeObj.LeftBorder     = CellBorderLine(nColor, nInnerLineWidth, nOuterLineWidth, nLineDistance)
Set RangeObj.BottomBorder   = CellBorderLine(nColor, nInnerLineWidth, nOuterLineWidth, nLineDistance)
End Sub
 
Private Function MakePropertyValue(cName, uValue) As Variant
On Error GoTo ERRLINE
Dim oPropertyValue As Variant
Dim oSM As Variant
Dim Res(1) As String
 
Set oPropertyValue = ObjServiceManager.Bridge_GetStruct("com.sun.star.beans.PropertyValue")
oPropertyValue.Name = cName
oPropertyValue.Value = uValue
Set MakePropertyValue = oPropertyValue
Res(0) = "1"
Res(1) = ""
EXT_:
MakePropertyValue = Res
Exit Function
ERRLINE:
Res(0) = "0"
Res(1) = "MakePropertyValue - Code: " & CStr(Err) & " Text: " & Error$ & " Line: " & CStr(Erl)
Print Res(1)
pLastError = Error$
pLastErrorLine = Erl
pLastErrorCode = Err
Resume EXT_
End Function
End Class
PS сори, за дубликаты, что то какая ошибка вылезла при создании поста
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.01.2012, 08:57
Ответы с готовыми решениями:

Linux mint + win 8 + uefi + hibernate - пропал загрузчик linux
Здравствуйте, скажу сразу, линукс установил впервые, поэтому может вопрос будет нубский. На ноуте lenovo b590 - есть предустановленная...

Lotus и Linux
Други подскажите где можно (если можно) качнуть клиента Lotus под Linux? В идеале конечно ещё и дизайнер. Сайт ибэмэ перерыл - ничего...

Linux & Lotus
Не подскажите где можно достать Lotus Client &amp; Disigner для Linux?

11
1 / 1 / 0
Регистрация: 04.08.2006
Сообщений: 2,950
05.01.2012, 10:19
Цитата Сообщение от RixPvl
хотелось бы сделать его кросс платформенным.
эээ, кагдбэ CreateObject function - CreateObject is not supported under OS/2 or UNIX

Думаю крутить надо начинать отсюда

Добавлено: Если скрипт будет выполняться на стороне сервера, то может легче формировать XML документ (работать как с текстовым файлом).

например взять готовый шаблон Эксель/Калк файла, сохранить его аки XML, выбрать заголовочные теги и закрывающие теги, а посередине писать уже вывод инормации


на пальцах структура файла будет:

ШАПКА ( константа )

мои 300 строк отчета

КОНЕЦ ( константа )
0
0 / 0 / 0
Регистрация: 26.11.2011
Сообщений: 69
05.01.2012, 10:26
Курил, но ни как не могу выкурить :(

Добавлено: Точно, но все же хотел бы довести этот класс до ума :lovecodeby:

Добавлено: Ну а так же существует момент такой, что нужно составить отчет по шаблону, то есть нужно открыть шаблон екселя и вбивать туда данные. как бы с этим?
0
1 / 1 / 0
Регистрация: 04.08.2006
Сообщений: 2,950
05.01.2012, 10:46
Цитата Сообщение от RixPvl
Добавлено: Ну а так же существует момент такой, что нужно составить отчет по шаблону, то есть нужно открыть шаблон екселя и вбивать туда данные. как бы с этим?
ну так конвертните готовый шалон в XML - 3 секунды займёт
0
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
05.01.2012, 14:06
форматирования не делал (точилась, в основном, под загрузку)
выгрузка сделана для хехеля и csv
есть и др. либы для хехеля, например http://www.andykhan.com/jexcelapi/tutorial.html
если цель - получение отчёта, лучше использовать ПДФ, либа для универсального метода - jasperreports
там получаем хмл, а на выходе хоть хехель, хоть ворд, хоть ПДФ
0
0 / 0 / 0
Регистрация: 26.11.2011
Сообщений: 69
05.01.2012, 14:46
Видите ли мне нужно составлять отчет на стороне сервера используя лицензионное ПО, ОпенОфис один из бесплатных, использовать продукты MS запретили. Да и ОО крос платформенный. Вот в общем идея использовать XML я как понимаю удобно для статичного отчета, с конкретной формой, а мне нужно вот что
действия на стороне клиента:
Пользователь выбрал отчет, задал форму, указал поля и запустил.
действия на стороне сервера:
Сервер автоматический запускает отчет, берет указанный шаблон подставляет туда данные сохраняет и высылает пользователю на почту.
С тем классом то что я ранее написал, это получается но только на платформе NT, а теперь мне нужно сделать его и для UNIX(Linux) вот и все...
0
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
05.01.2012, 23:57
то что я описал выше выполняется на любой платформе, где есть домина
при том - не нужно устанавливать никакого офиса и прочего, соответ. либы выложить в jvm/lib/ext
либы все фришные, мало того - ОСС
никакой винды никаких офисов...
0
0 / 0 / 0
Регистрация: 12.11.2009
Сообщений: 882
06.01.2012, 17:17
Цитата Сообщение от RixPvl
В общем, необходимо написать CLASS по работе с OpenOffice(OO) для формирования отчета на стороне сервера,
Дак вроде уже есть готовый класс для работ с ODF или чего то не понял? http://www.ibm.com/developerworks/ru/libra...mphony-toolkit/
0
0 / 0 / 0
Регистрация: 12.06.2010
Сообщений: 215
06.01.2012, 21:02
>Дак вроде уже есть готовый класс для работ с ODF или чего то не понял?
Оно работает только на клиенте и начиная с 8.5.1
0
0 / 0 / 0
Регистрация: 12.11.2009
Сообщений: 882
07.01.2012, 10:24
Цитата Сообщение от AlexeyKatyushyn
>Дак вроде уже есть готовый класс для работ с ODF или чего то не понял?
Оно работает только на клиенте и начиная с 8.5.1
8.5.1 - это понятно. Где есть указание что только на клиенте?
0
0 / 0 / 0
Регистрация: 12.11.2009
Сообщений: 882
07.01.2012, 11:34
Цитата Сообщение от rinsk
8.5.1 - это понятно. Где есть указание что только на клиенте?
Нашел: http://www-03.ibm.com/software/lotus/symph...0E002C906D?Open
если не поправили в 8.5.3 то эт печально...
0
0 / 0 / 0
Регистрация: 12.06.2010
Сообщений: 215
07.01.2012, 14:54
>8.5.1 - это понятно. Где есть указание что только на клиенте?
Имхо, всеже с 8.5.2.
Симфони ставится в комплекте с LN а не с Domino. Соответственно и использовани классов возможно в клиенте, а не на сервере.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.01.2012, 14:54
Помогаю со студенческими работами здесь

Lotus Notes 7 For Linux
Доброго дня! Может есть у кого-нибудь клиент под линукс?

Подружить Php(on Linux) с Lotus (on Nt)?
Есть ли у кого реально работающие примеры того как с помощью пхп доставать данные из Лотуса

Розыск Lotus Notes 6.5.4 Linux Client
Коллеги нужна помощь, что-то ни как не могу отыскать Lotus Notes Client 6.5.4 for Linux Может кто посылочку волшебную нарисует только не...

Lotus клиент для Linux Убунту
В свете того что Микрософт решил всех поиметь, а наши клиенты не хотят чтобы их имели, был проведен эксперимент - поставлен...

Шрифты Lotus Notes в Alt Linux
Доброго времени суток! Установил себе в Alt Linux 5.0 Lotus Notes 8.5, пришлось конечно немного помучиться, но встал, работает....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru