powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / OpenOffice.org как COM обьект
7 сообщений из 7, страница 1 из 1
OpenOffice.org как COM обьект
    #32914589
Vitaly_S
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может кто знает, поддерживает ли OpenOffice эту технологию,
хотелось бы из Фокса сформировать отчетик в OpenOffice Writer, а не в MS Office Word.
Спасибо.
...
Рейтинг: 0 / 0
OpenOffice.org как COM обьект
    #32914665
Burn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуй воспользоватся поиском - вроде была такая тема, даже с премером.
В общем виде ответ - Да, правда используется не VBA а JavaScript. С документацией проблемы даже на openoffice.org
...
Рейтинг: 0 / 0
OpenOffice.org как COM обьект
    #32915098
guest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А кто где видел документацию по Open Office( по языку)?
Там даже примеры из Helpa не все запускаются.
...
Рейтинг: 0 / 0
OpenOffice.org как COM обьект
    #32915691
Фотография Vladimir M Sklyar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ищите на сайте OpenOffice
- DevelopersGuide.pdf (13Мб)
This manual describes how to write programs using the component technology UNO (Universal Network Objects) with OpenOffice.org. Most examples provided are written in Java. As well as Java, the language binding for C++, the UNO access for OpenOffice.org Basic and the OLE Automation bridge that uses OpenOffice.org through Microsoft's component technology COM/DCOM is described.

- excelfileformat.pdf (1Мб)
This document contains a description of the binary file format of Microsoft Excel, including all available Excel versions
(for Windows) from Excel 2.1 to the current Excel 2003.


Сходи еще вот сюда http://support.openoffice.org/index.html, может чего там нароешь

Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
OpenOffice.org как COM обьект
    #32916105
Фотография Игорь Л.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Некто pijon на FoxForum привел такой код - может пригодится:
Код: plaintext
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.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
237.
238.
239.
240.
241.
242.
243.
244.
245.
246.
247.
248.
249.
250.
251.
252.
253.
254.
255.
256.
257.
258.
259.
260.
261.
262.
263.
264.
265.
266.
267.
268.
269.
270.
271.
272.
273.
274.
275.
276.
277.
278.
279.
280.
281.
282.
283.
284.
285.
286.
287.
288.
289.
290.
291.
292.
293.
294.
295.
296.
297.
298.
299.
300.
301.
302.
303.
304.
305.
306.
307.
308.
309.
310.
311.
312.
313.
314.
315.
316.
317.
318.
319.
320.
321.
322.
323.
324.
325.
326.
327.
328.
329.
330.
331.
332.
333.
334.
335.
336.
337.
338.
339.
340.
341.
342.
343.
344.
345.
346.
347.
348.
349.
350.
351.
352.
353.
354.
355.
356.
357.
358.
359.
360.
361.
362.
363.
364.
365.
366.
367.
368.
369.
370.
371.
372.
373.
374.
375.
376.
377.
378.
379.
380.
381.
382.
383.
384.
385.
386.
387.
388.
389.
390.
391.
392.
393.
394.
395.
396.
397.
398.
399.
400.
401.
Експорт Грида в ОпенОфис:
  
    
  lcAlias = this.Grid1.RecordSource  
  SELECT (lcAlias)   
  PUBLIC oOfcMgr, oDesktop, oPropertyValue, oServiceManager, oDocument, oSheet, oCell, oText, oCursor  
  _printcoment='Табель роботи транспорту'+' з '+mstnb(thisform._mm_)+' '+alltrim(thisform._year.value)  
    
  oGrid = this.Grid1 &&Задаеш свой Грид  
    
  WAIT "Зачекайте, триває експорт в OpenOffice.org!!!" WINDOW NOWAIT   
  DECLARE INTEGER GetActiveWindow IN WIN32API  
  DECLARE INTEGER GetDC IN WIN32API INTEGER iHDC  
  DECLARE INTEGER GetDeviceCaps IN WIN32API INTEGER iHDC, INTEGER iIndex  
    
  LOCAL liHDC, lnTwipX, lnTwipY, lnDX, lnDY  
  liHDC = GetDC(GetActiveWindow())  
  lnTwipX =  1440 /GetDeviceCaps(m.liHDC, 88 )  
  lnTwipY =  1440 /GetDeviceCaps(m.liHDC, 90 )  
  lnDX = GetDeviceCaps(m.liHDC, 88 )  
  lnDY = GetDeviceCaps(m.liHDC, 90 )  
    
  DECLARE INTEGER ReleaseDC IN WIN32API INTEGER, INTEGER   
  =ReleaseDC(GetActiveWindow(),m.liHDC)  
    
    
    
  PUBLIC ARRAY mNoArgs[ 1 ]  
  IF TYPE("CreateObject('com.sun.star.ServiceManager')")!="O"  
 *	= MESSAGEBOX('OpenOffice не знайдено на ПК!')		  
  	RETURN .F.  
  ENDIF   
    
    
    
    
  oOfcMgr = CreateObject("com.sun.star.ServiceManager")  
    
  IF TYPE('oOfcMgr') = 'O'	  
  	oDesktop = oOfcMgr.createInstance("com.sun.star.frame.Desktop")  
 *	перевіряємо чи встановлено Табличний редактор  
  	oServiceManager = CREATEOBJECT( "com.sun.star.ServiceManager" )  
  	oPropertyValue = oServiceManager.Bridge_GetStruct( "com.sun.star.beans.PropertyValue" )  
  	  
  	oPropertyValue.Name = "Hidden"  
  	oPropertyValue.Value = .f.  
  	mNoArgs[ 1 ] = oPropertyValue  
  	COMARRAY(oDesktop, 10 )	  
  	oDocument = oDesktop.LoadComponentFromURL("private:factory/scalc","_blank", 0 ,@mNoArgs)  
 	*oDocument.visible = .f.  
 *!*		oPropertyValue.Name = "Hidden"  
 *!*		oPropertyValue.Value = .f.  
 *!*		mNoArgs[ 1 ] = oPropertyValue  
  	  
  	IF TYPE('oDocument') = 'O'	  
  		oDocument.getCurrentController.getFrame.getContainerWindow.setVisible(.f.)   
  		oSheet = oDocument.getSheets().getByIndex(  0  )  
  		LOCAL xlRow  
  		xlRow =  0   
  		oCell = oSheet.getCellByPosition( 0 ,xlRow)  
 *		починаємо експорт  
  		  
 *		робимо заголовок таблиці  
 *DO make_str WITH top_str, oCell, 'Arial',  20 ,  200   
 *		tmp_cell = oCell  
  		oText = oCell.getText()   
  		oCursor = oText.createTextCursor()   
  		oCursor.CharFontName = 'Times New Roman'  
  		oCursor.CharHeight =  14   
  		oCursor.CharWeight =  200   
  		oCell.setString(_printcoment)  
    
    
  oPropertyValue.Name = "Hidden"  
  	oPropertyValue.Value = .f.  
  	mNoArgs[ 1 ] = oPropertyValue  
    
  		xlRow = xlRow +  1   
 * експортуємо заголовки  
  a =  0   
  x =  0   
  	FOR i =  1  TO this.grid1.ColumnCount  
   		FOR jj =  1  TO this.grid1.ColumnCount  
  			IF this.grid1.columns(jj).ColumnOrder = i  
  				a = jj  
  			ENDIF   
   		ENDFOR   
  IF oGrid.columns[a].visible  
  	x = x +  1    
  	oCell=oSheet.getCellByPosition(x- 1 ,xlRow)  
  	  
 	*DO exp_header WITH oGrid.Columns.Header1, oCell  
  			tmp_header = oGrid.Columns[a].Header1  
  			tmp_cell = oCell  
  			DO CASE   
  			   CASE tmp_header.Alignment= 0   
  			   		tmp_cell.HoriJustify= 1   
  			   		tmp_cell.VertJustify= 2   
  			   CASE tmp_header.Alignment= 1   
  			   		tmp_cell.HoriJustify= 3   
  			   		tmp_cell.VertJustify= 2   
  			   CASE tmp_header.Alignment= 2   
  			   		tmp_cell.HoriJustify= 2   
  			   		tmp_cell.VertJustify= 2   
  			   CASE tmp_header.Alignment= 3   
  			   		tmp_cell.HoriJustify= 0   
  			   		tmp_cell.VertJustify= 0   
  			   CASE tmp_header.Alignment= 4   
  			   		tmp_cell.HoriJustify= 1   
  			   		tmp_cell.VertJustify= 1   
  			   CASE tmp_header.Alignment= 5   
  			   		tmp_cell.HoriJustify= 3   
  			   		tmp_cell.VertJustify= 1   
  			   CASE tmp_header.Alignment= 6   
  			   		tmp_cell.HoriJustify= 2   
  			   		tmp_cell.VertJustify= 1   
  			   CASE tmp_header.Alignment= 7   
  			   		tmp_cell.HoriJustify= 1   
  			   		tmp_cell.VertJustify= 3   
  			   CASE tmp_header.Alignment= 8   
  			   		tmp_cell.HoriJustify= 3   
  			   		tmp_cell.VertJustify= 3   
  			   CASE tmp_header.Alignment= 9   
  			   		tmp_cell.HoriJustify= 2   
  			   		tmp_cell.VertJustify= 3 			     
  			ENDCASE  
  			  
 * колір заднього фону  
  			tmp_cell.CellBackColor = tmp_header.BackColor  
    
 *перенос по словам  
    
  			tmp_cell.IsTextWrapped = tmp_header.WordWrap  
    
    
 * робимо рамки  
  			oBorder = tmp_cell.Tableborder   
  			oBorderline = oBorder.TopLine   
  			oBorderline.outerlinewidth =  2    
  			oBorderline.innerlinewidth =  0    
  			oBorderline.linedistance =  0    
  			oBorderline.color = RGB( 0 , 0 , 0 )   
  			oBorder.Topline = oBorderline   
  			oBorder.Bottomline = oBorderline   
  			oBorder.Leftline = oBorderline   
  			oBorder.Rightline = oBorderline   
  			oBorder.Horizontalline = oBorderline   
  			oBorder.Verticalline = oBorderLine   
  			oBorder.Distance =  100    
  			tmp_cell.Tableborder = oBorder   
 	*SET STEP ON  
    
    
 *встановлюэмо  параметри шрифтів   
  	  
  			oText = tmp_cell.getText()   
  			oCursor = oText.createTextCursor()  
  			  
  			oCursor.CharFontName = tmp_header.FontName  
  			oCursor.CharHeight = tmp_header.FontSize  
  			IF tmp_header.FontBold  
  				oCursor.CharWeight =  200   
  			ELSE  
  				oCursor.CharWeight =  100   
  			ENDIF  
  			oCursor.CharColor = tmp_header.ForeColor   
  			oCursor.CharUnderline = tmp_header.FontUnderline  
  			oCursor.CharCrossedOut = tmp_header.FontStrikethru  
  			oCursor.CharShadowed = tmp_header.FontShadow  
 			*oCursor. = tmp_header.FontItalic  
  	  
  	  
  	oSheet.getColumns.getByIndex(x- 1 ).width=(oGrid.Columns[a].width / lnDX) *  2540   
  	oCell.setString(oGrid.Columns[a].Header1.caption)  
  ENDIF   
  ENDFOR   
    
  a= 0   
    
 *		переносимо дані  
  		SCAN  
  		xlRow = xlRow +  1   
  		a =  0   
  		x =  0   
  		FOR i =  1  TO this.grid1.ColumnCount  
   			FOR jj =  1  TO this.grid1.ColumnCount  
  				IF this.grid1.columns(jj).ColumnOrder = i  
  					a = jj  
  				ENDIF   
   			ENDFOR   
  		IF oGrid.columns[a].visible  
  		x = x +  1    
  		tmp=oGrid.Columns[a].ControlSource  
  		oCell=oSheet.getCellByPosition(x- 1 ,xlRow)  
  		  
  			  
    
 *встановлюэмо  параметри шрифтів   
  			tmp_cell = oCell  
  			tmp_columnvalue = oGrid.Columns[a]  
  			oText = tmp_cell.getText()   
  			oCursor = oText.createTextCursor()  
  			  
  			oCursor.CharFontName = tmp_columnvalue.FontName  
  			oCursor.CharHeight = tmp_columnvalue.FontSize  
  			IF tmp_columnvalue.FontBold  
  				oCursor.CharWeight =  200   
  			ELSE  
  				oCursor.CharWeight =  100   
  			ENDIF  
  			oCursor.CharColor = tmp_columnvalue.ForeColor   
  			oCursor.CharUnderline = tmp_columnvalue.FontUnderline  
  			oCursor.CharShadowed = tmp_columnvalue.FontShadow  
    
 			*oCursor.CharItalic = tmp_columnvalue.FontItalic  
 *dynamic  
 *			IIF(EMPTY(tmp_columnvalue.dynamicbackcolor), tmp_cell.CellBackColor = tmp_columnvalue.BackColor, tmp_cell.CellBackColor = tmp_columnvalue.dynamicbackcolor)  
  			IF !EMPTY(tmp_columnvalue.dynamicFontShadow)			  
  				cl=tmp_columnvalue.dynamicFontShadow  
  				oCursor.CharShadowed  = &cl  
  					  
  			ENDIF  
    
  			IF !EMPTY(tmp_columnvalue.dynamicFontStrikethru)			  
  				cl=tmp_columnvalue.dynamicFontStrikethru  
  				oCursor.CharCrossedOut  = &cl  
  			ENDIF  
  			IF !EMPTY(tmp_columnvalue.dynamicFontUnderline)			  
  				cl=tmp_columnvalue.dynamicFontUnderline  
  				oCursor.CharUnderline  = &cl  
  			ENDIF  
  			IF !EMPTY(tmp_columnvalue.dynamicfontname)			  
  				cl=tmp_columnvalue.dynamicfontname  
  				oCursor.CharFontName  = &cl  
  			ENDIF  
  			IF !EMPTY(tmp_columnvalue.dynamicbackcolor)			  
  				cl=tmp_columnvalue.dynamicbackcolor  
  				tmp_cell.CellBackColor = &cl  
  			ENDIF  
  			IF !EMPTY(tmp_columnvalue.dynamicfontsize)			  
  				cl=tmp_columnvalue.dynamicfontsize  
  				oCursor.CharHeight  = &cl  
  			ENDIF  
  			IF !EMPTY(tmp_columnvalue.dynamicfontbold)			  
  				cl=tmp_columnvalue.dynamicfontbold  
  				IF (&cl)  
  					oCursor.CharWeight =  200   
  				ELSE  
  					oCursor.CharWeight =  100   
  				ENDIF  
  			ENDIF  
 *встановлюємо вирівнювання для комірки  
  			DO CASE   
  			   CASE tmp_columnvalue.Alignment= 0   
  			   		tmp_cell.HoriJustify= 1   
  			   		tmp_cell.VertJustify= 2   
  			   CASE tmp_columnvalue.Alignment= 1   
  			   		tmp_cell.HoriJustify= 3   
  			   		tmp_cell.VertJustify= 2   
  			   CASE tmp_columnvalue.Alignment= 2   
  			   		tmp_cell.HoriJustify= 2   
  			   		tmp_cell.VertJustify= 2   
  			   CASE tmp_columnvalue.Alignment= 3   
  			   		tmp_cell.HoriJustify= 0   
  			   		tmp_cell.VertJustify= 0   
  			   CASE tmp_columnvalue.Alignment= 4   
  			   		tmp_cell.HoriJustify= 1   
  			   		tmp_cell.VertJustify= 1   
  			   CASE tmp_columnvalue.Alignment= 5   
  			   		tmp_cell.HoriJustify= 3   
  			   		tmp_cell.VertJustify= 1   
  			   CASE tmp_columnvalue.Alignment= 6   
  			   		tmp_cell.HoriJustify= 2   
  			   		tmp_cell.VertJustify= 1   
  			   CASE tmp_columnvalue.Alignment= 7   
  			   		tmp_cell.HoriJustify= 1   
  			   		tmp_cell.VertJustify= 3   
  			   CASE tmp_columnvalue.Alignment= 8   
  			   		tmp_cell.HoriJustify= 3   
  			   		tmp_cell.VertJustify= 3   
  			   CASE tmp_columnvalue.Alignment= 9   
  			   		tmp_cell.HoriJustify= 2   
  			   		tmp_cell.VertJustify= 3 			     
  			ENDCASE  
  			  
 * колір заднього фону  
  			tmp_cell.CellBackColor = tmp_columnvalue.BackColor  
    
 *перенос по словам  
    
 *			tmp_cell.IsTextWrapped = tmp_columnvalue.WordWrap  
    
    
 * робимо рамки  
  			oBorder = tmp_cell.Tableborder   
  			oBorderline = oBorder.TopLine   
  			oBorderline.outerlinewidth =  2    
  			oBorderline.innerlinewidth =  0    
  			oBorderline.linedistance =  0    
  			oBorderline.color = RGB( 0 , 0 , 0 )   
  			oBorder.Topline = oBorderline   
  			oBorder.Bottomline = oBorderline   
  			oBorder.Leftline = oBorderline   
  			oBorder.Rightline = oBorderline   
  			oBorder.Horizontalline = oBorderline   
  			oBorder.Verticalline = oBorderLine   
  			oBorder.Distance =  100    
  			tmp_cell.Tableborder = oBorder   
 	*SET STEP ON  
    
 *dynamic  
 *			IIF(EMPTY(tmp_columnvalue.dynamicbackcolor), tmp_cell.CellBackColor = tmp_columnvalue.BackColor, tmp_cell.CellBackColor = tmp_columnvalue.dynamicbackcolor)  
  			IF !EMPTY(tmp_columnvalue.dynamicFontShadow)			  
  				cl=tmp_columnvalue.dynamicFontShadow  
  				oCursor.CharShadowed  = &cl  
  					  
  			ENDIF  
    
  			IF !EMPTY(tmp_columnvalue.dynamicFontStrikethru)			  
  				cl=tmp_columnvalue.dynamicFontStrikethru  
  				oCursor.CharCrossedOut  = &cl  
  			ENDIF  
  			IF !EMPTY(tmp_columnvalue.dynamicFontUnderline)			  
  				cl=tmp_columnvalue.dynamicFontUnderline  
  				oCursor.CharUnderline  = &cl  
  			ENDIF  
  			IF !EMPTY(tmp_columnvalue.dynamicfontname)			  
  				cl=tmp_columnvalue.dynamicfontname  
  				oCursor.CharFontName  = &cl  
  			ENDIF  
  			IF !EMPTY(tmp_columnvalue.dynamicbackcolor)			  
  				cl=tmp_columnvalue.dynamicbackcolor  
  				tmp_cell.CellBackColor = &cl  
  			ENDIF  
  			IF !EMPTY(tmp_columnvalue.dynamicfontsize)			  
  				cl=tmp_columnvalue.dynamicfontsize  
  				oCursor.CharHeight  = &cl  
  			ENDIF  
  			IF !EMPTY(tmp_columnvalue.dynamicfontbold)			  
  				cl=tmp_columnvalue.dynamicfontbold  
  				IF (&cl)  
  					oCursor.CharWeight =  200   
  				ELSE  
  					oCursor.CharWeight =  100   
  				ENDIF  
  			ENDIF  
    
    
  			  
  				IF TYPE(tmp)='C'  
  					oCell.setString(&tmp)  
  				ENDIF  
  				 					  
  				IF TYPE(tmp)='L'  
  					IF  &tmp=.T.  
  						oCursor.CharFontName = 'Webdings'  
  						oCell.setString(CHR( 97 ))  
  					ELSE  
  						oCursor.CharFontName = 'Webdings'  
  						oCell.setString(CHR( 114 ))  
  					ENDIF   
  				ENDIF   
  				  
  				IF TYPE(tmp)="T"  
  					oCell.setString(TTOC(&tmp))  
  				ENDIF    
  				  
  				IF TYPE(tmp)="D"  
  					oCell.setString(DTOC(&tmp))  
  				ENDIF    
    
    
  				IF TYPE(tmp)="N"  
  					oCell.setValue(&tmp)  
  				ENDIF    
  				  
 *!*					IF ((TYPE(tmp)!='M'))  
 *!*						oCell.setValue(&tmp)						  
 *!*					ENDIF   
  			  
  			ENDIF 			  
  		ENDFOR   
  	ENDSCAN  
  GO TOP  
 *!*	oDocument.release()  
 *!*	oPropertyValue.release()  
 *!*	oServiceManager.release()  
 *!*	oDesktop.release()   
 *!*	oOfcMgr.release()  
    
  oDocument.getCurrentController.getFrame.getContainerWindow.setVisible(.t.)   
  RETURN .T.  
  	ELSE  
 		*= MESSAGEBOX('Табличний редактор OpenOffice не знайдено на ПК!')		  
  		RETURN .F.  
  	ENDIF  
    
  ELSE  
 	*= MESSAGEBOX('OpenOffice не знайдено на ПК!')		  
  	RETURN .F.  
  ENDIF  
---
... и все мы можем!
Козьма Прутков
...
Рейтинг: 0 / 0
OpenOffice.org как COM обьект
    #32921979
Александр Третьяков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код pijon и Тараса Будзяка работает у нас уже больше года.
...
Рейтинг: 0 / 0
OpenOffice.org как COM обьект
    #32922586
Материалы для этого кода были найдены тут
http://]http://www.oooforum.org/forum/
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / OpenOffice.org как COM обьект
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]