Zapis danych do OppenOffice

Odpowiedz Nowy wątek
2013-06-11 12:15
0

Witam

Potrzebuje w programie dodać możliwość eksportu tabeli do pliku *.ods (Calc - Open Office).

Zgodnie z tym co znalazłem w necie wklepałem coś takiego :

procedure TForm1.Button9Click(Sender: TObject);
VAR
   OpenOffice,OpenDesktop ,objDocument: Variant;
begin
      OpenOffice := CreateOleObject('com.sun.star.ServiceManager');
      OpenDesktop := OpenOffice.createInstance('com.sun.star.frame.Desktop');
      objDocument:= OpenDesktop.loadComponentFromURL('c:\xxx.ods','_blank', 0);

end;      

Przy próbie wywołania otrzymuję błąd "niedopasowanie typu".

Czy to jest spowodowane ?

Z góry dziękuje za pomoc.

wyświetla w której linijce ? - m_Lesiu 2013-06-11 13:32
po kliknięciu "brake" w oknie z komunikatem, podświetla ostatnią linię ( objDocument:= OpenDesktop.loadComponentFromURL('c:\xxx.ods','_blank', 0); ) - hipekk 2013-06-11 13:47

Pozostało 580 znaków

2013-06-11 13:31
2rwe2
0

Dlaczego twoim zdaniem używamy i/lub rozwijamy OpenOffice? Czy jeżeli będziesz mieć problem z glebogryzarką X2000 to też napiszesz tutaj a nie do producenta? Serio? A może po prostu nie potrafisz wybrać odpowiedniego forum na swoje pytanie?

2013-06-11 13:48
0
2rwe2 napisał(a):

Dlaczego twoim zdaniem używamy i/lub rozwijamy OpenOffice? Czy jeżeli będziesz mieć problem z glebogryzarką X2000 to też napiszesz tutaj a nie do producenta? Serio? A może po prostu nie potrafisz wybrać odpowiedniego forum na swoje pytanie?

Jeżeli glebogryzarką X2000 będę próbował sterować za pośrednictwem aplikacji napisanej w Delphi i to właśnie Delphi wywali mi błąd to owszem - poproszę o pomoc tutaj.

Pozostało 580 znaków

2013-06-11 13:56
0

"nigdy tego nie robiłem", ale może spróboj na Wordzie który pewnie jest lepiej opisany, potem pewnie łatwiej będzie przenieśc na Opena
http://docs.embarcadero.com/p[...]/OleAuto_CreateOleObject.html


Pozostało 580 znaków

2013-06-11 14:55
1

Wg gugla powinno być

OpenDesktop.loadComponentFromURL(ConvertToURL('c:\xxx.ods'),'_blank', 0)

To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell

Pozostało 580 znaków

2013-06-11 17:32
0
m_Lesiu napisał(a):

"nigdy tego nie robiłem", ale może spróboj na Wordzie który pewnie jest lepiej opisany, potem pewnie łatwiej będzie przenieśc na Opena
http://docs.embarcadero.com/p[...]/OleAuto_CreateOleObject.html

Z Wordem to rzeczywiście działa.
Jednak Open Office nie mogę namówić do współpracy póki co...

Pozostało 580 znaków

2013-06-11 19:51
0

Na wstępie zaznacze, że przykład kodu dołaczonego do tego posta - pisany jest w Delphi 7. Pod takim IDE na ogół piszę. Także do Lazarusa sobie go możesz po przeanalizowaniu przeróbić. Całość pisana była bardzo dawno temu. I nie do końca jest to profesjonalne. Jendnak chodzi o zasadę współpracy z Open Office Calciem. Możesz sobie uruchomić exek programu, który zawsze dołaczam wraz z kodem. Później dodać jakieś nicki (mogą być na szybko na przykład pojedyncze znaki) do jeden z grup. Ewentualnie później zmienić inne, dostępne opcje i eksportować do Open Office Calca jednym z przycisków. Sprawdziłem i z nieco starszą wersją OE, jaką używam, czyli 3.1.0 działa to nadal prawidłowo. Może kiedyś zaktualizuje OE. A program powstał spory czas temu, kiedy miałem zoorganizować turniej w Amigową wersję "Sensible World of Soccer" u siebie. I potrzebowałem rozwiązania, które wygeneruje szybko eleganckie tabelki z nickami graczy, od razu gotowe do wydrukowania. Być może kod się Tobie przyda. Jeżli nie - to trudno. Wtedy może ktoś jeszcze coś Ci tutaj doradzi lepszego. I może napisanego od razu w Lazarusie.


Pozostało 580 znaków

2013-06-11 21:26
0

@olesio dziękuję bardzo za udostępnienie swojego projektu.

Po dodaniu bibliotek oootools i ooomessage na początek spróbowałem ze zwykłym wywołaniem :

  ConnectOpenOffice;
  StarDesktop.LoadComponentFromURL('private:factory/scalc', '_blank', 0);  

Tym razem otrzymuję komunikat:
"W magazynie brak miejsca na wykonania tej operacji"

Pozostało 580 znaków

2013-06-11 21:47
0

Nie wgłębiałem się w ten moduł. Googlując na przemiennie za przykładami Office'a od MicroSoftu, a później w nieco bałaganiarsko zorganizowanej dokumentacji SDK OpenOffice'a, zrobiłem jak widzisz. I u mnie działa. Dlatego pytanie, czy na moim oryginalnym kodzie, też Ci się nie otwiera OpenOffice Calc i nie tworzy gotowa tabelka z nickami i miejscem na wpisanie rezultatów? Pewnie z MicroSoftowym Office'm bylo by mniej problemów, ale ja używam OE od dawna po przesiadce na nowszy systemy i dlatego kombinowałem z tym rozwiązaniem. Jedynie więcej co mogę Tobie doradzić, to spróbować napisać na oficjalne forum supportu. I raczej znaleźć te anglojęzyczne sekcje, bo nie wiem czy na użytkowników z Polski w tej kwestii mozna liczyć i to pisząc w u nas jak niestety się mi wydaje, dosyć "niszowym" języku programowania, jakim jest obiektowy Pascal.


A tak z czystej ciekawości : skoro obiektowy pascal jest niszowy, to co jest na topie :) ? - hipekk 2013-06-11 21:58
Pewnie ceplusplusy, dżawy i inne sprawy, takie mam obawy ;) A tak poważnie, to pytanie nie do mnie. Ja z braku ambicji oraz czasu na naukę innych składni oraz niuansów językowych, pozostaje "wierny" Delphi. - olesio 2013-06-11 23:41

Pozostało 580 znaków

2013-06-11 21:57
0

Uruchamiając Twój projekt (z exe'ka) wszystko chodzi poprawnie.
Próbowałem importować go do Lazarusa ale kończy się nastoma błędami różnej maści.
Korzystając z Twojego projektu zrobię sobie na szybko oddzielny programik do eksportu w Delphi, a na przyszłość spróbuję poszukać rozwiązania na oficjalnym forum OO tak jak zasugerowałeś.
Dziękuję serdecznie za pomoc.

Ps. Z exportem do Excela MicroSoftu nie ma problemu - jednak w firmie używamy wyłącznie Calca (koszty...)

edytowany 1x, ostatnio: olesio, 2013-06-11 21:59

Pozostało 580 znaków

2013-06-11 22:01
0

Ok, niestety z przeportowaniem do Lazarusa nie pomogę. Jeśli dyrektywa kompilatora {$MODE DELPHI} nie pomaga, to nie wiem czy bym doszedł, jak przerobić te moduły. Być może istnieją również i gotowe komponenty/moduły/artukuły z podpowiedziami, które pozwolą Tobie ogarnąć ten temat pod Lazarusem.


Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0