Zapis danych do OppenOffice

Zapis danych do OppenOffice
HI
  • Rejestracja:prawie 13 lat
  • Ostatnio:2 minuty
  • Postów:1855
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 :

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

m_Lesiu
wyświetla w której linijce ?
HI
po kliknięciu "brake" w oknie z komunikatem, podświetla ostatnią linię ( objDocument:= OpenDesktop.loadComponentFromURL('c:\xxx.ods','_blank', 0); )
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?

HI
  • Rejestracja:prawie 13 lat
  • Ostatnio:2 minuty
  • Postów:1855
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.

m_Lesiu
  • Rejestracja:prawie 12 lat
  • Ostatnio:około 4 lata
  • Postów:138
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/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/delphivclwin32/OleAuto_CreateOleObject.html


bogdans
Moderator
  • Rejestracja:ponad 16 lat
  • Ostatnio:prawie 5 lat
1

Wg gugla powinno być

Kopiuj
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
HI
  • Rejestracja:prawie 13 lat
  • Ostatnio:2 minuty
  • Postów:1855
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/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/delphivclwin32/OleAuto_CreateOleObject.html

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

olesio
  • Rejestracja:prawie 17 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Szczecin
  • Postów:4191
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.


Pozdrawiam.
HI
  • Rejestracja:prawie 13 lat
  • Ostatnio:2 minuty
  • Postów:1855
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 :

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

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

olesio
  • Rejestracja:prawie 17 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Szczecin
  • Postów:4191
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.


Pozdrawiam.
HI
A tak z czystej ciekawości : skoro obiektowy pascal jest niszowy, to co jest na topie :) ?
olesio
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.
HI
  • Rejestracja:prawie 13 lat
  • Ostatnio:2 minuty
  • Postów:1855
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
olesio
  • Rejestracja:prawie 17 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Szczecin
  • Postów:4191
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.


Pozdrawiam.
0

Próbowałem importować go do Lazarusa ale kończy się nastoma błędami różnej maści.

No to teraz możesz dziękować temu że jednemu z najbardziej doświadczonych użytkowników (jeżeli nie najbardziej doświadczonemu) Lazarusa tutaj wmawiałeś że jest idiotą.

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.

Olesio, nie mów o tym o czym nie masz pojęcia, {$MODE DELPHI} jest dodawane z automatu...

HI
Obędzie się bez pomocy Wszechwiedzącego... "Krowa która dużo ryczy mało mleka daje"....
PD
  • Rejestracja:ponad 22 lata
  • Ostatnio:około 6 godzin
0

@hipekk - jeżeli interesuje Ciebie eksport do arkusza kalkulacyjnego (OpenOffice lub MS Office) to polecam skorzystanie z komponentu fpspreadsheet: http://wiki.freepascal.org/FPSpreadsheet . W archiwum z komponentem są przykłady zapisu i odczytu, np. zapis do OO Calc:

Kopiuj
program opendocwrite;

{$mode delphi}{$H+}

uses
  Classes, SysUtils, fpspreadsheet, fpsallformats,
  laz_fpspreadsheet;

var
  MyWorkbook: TsWorkbook;
  MyWorksheet: TsWorksheet;
  MyDir: string;
begin
  MyDir := ExtractFilePath(ParamStr(0));

  // Create the spreadsheet
  MyWorkbook := TsWorkbook.Create;
  MyWorksheet := MyWorkbook.AddWorksheet('My Worksheet');

  // Write some cells
  MyWorksheet.WriteNumber(0, 0, 1.0);// A1
  MyWorksheet.WriteNumber(0, 1, 2.0);// B1
  MyWorksheet.WriteNumber(0, 2, 3.0);// C1
  MyWorksheet.WriteNumber(0, 3, 4.0);// D1
  MyWorksheet.WriteUTF8Text(4, 2, 'Total:');// C5
  MyWorksheet.WriteNumber(4, 3, 10);        // D5
  // Add some formatting
  MyWorksheet.WriteUsedFormatting(0, 0, [uffBold]);

  // Creates a new worksheet
  MyWorksheet := MyWorkbook.AddWorksheet('My Worksheet 2');

  // Save the spreadsheet to a file
  MyWorkbook.WriteToFile(MyDir + 'test.ods',
    sfOpenDocument);
  MyWorkbook.Free;
end. 

pozdrawiam
paweld
Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)