Sign in Join
Wiki copytemporary

CalcAutomation/de: what changed

Revision 1 to 2. Removed lines have a minus sign; added lines have a plus sign.

OldNewLine
1-\
21Zurück zur [[Office Automation/de|Office Automation]].\
3-\
4-\
2+
53=Calc=\
64==Benötigte Units==
75
86``` pascal
97uses
108 ..., ComObj, Variants, LazUtf8, ...;
119```
1210
1311# Aufbau einer Steuerung für die Anwendung Calc
1412
15-\
1613==Erstellen eines neuen Sheets und Speichern unter einem neuen Namen==
1714
1815``` pascal
1916
2017 ...
2118var
2219 // Reservieren des Speichers
2320 varCLApp: OleVariant;
2421 varDesktop: OleVariant;
2522 varSheets: OleVariant;
2623 varSheet1: OleVariant;
2724 varDokument: OleVariant;
2825 varLoadParams: OleVariant;
2926 strDateiname: shortstring; // nur Literale und Shortstrings sind automatisierbar
3027
3128begin
3229 // Erstellt das OleObjekt und erstellt den Zeiger darauf
3330 varCLApp := CreateOleObject('com.sun.star.ServiceManager');
3431
3532 // Erstellt den Zeiger auf den Officedesktop
3633 varDesktop := varCLApp.createInstance('com.sun.star.frame.Desktop');
3734 // Erstellt ein leeres Array das für die Dokumentenerstellung benötigt wird
3835 varLoadParams := VarArrayCreate([0, -1], varVariant);
3936 // Erstellt ein neues (leeres) Dokument (Workbook) und setzt den Zeiger darauf
4037 varDokument := varDesktop.LoadComponentFromURL('private:factory/scalc','_blank',0, varLoadParams);
4138 // Erstellt den Zeiger auf die Sheets
4239 varSheets := varDokument.getSheets();
4340 // Erstellt den Zeiger auf ein einzelnes Sheet
4441 varSheet1 := varSheets.getByIndex(0);
4542
4643 ...
4744
4845 // Variante 1:
4946 // Speichert das Dokument unter einem neuen Namen
5047 varDokument.StoreAsURL('file:///D:/test.ods', varLoadParams);
5148
5249 // Variante 2:
5350 // Speichert das Dokument mit Umlauten im neuen Dateinamen
5451 strDateiname := 'file:///D:/' + Utf8ToSys('täst.ods');
5552 varDokument.StoreAsURL(strDateiname, varLoadParams);
5653
5754 // Schliesst das Dokument
5855 varDokument.close(True);
5956 //Beendet die Anwendung
6057 varDesktop.terminate;
6158
6259 // Freigabe des Speichers
6360 varCLApp := UnAssigned;
6461 varDesktop := UnAssigned;
6562 varSheets := UnAssigned;
6663 varSheet1 := UnAssigned;
6764 varDokument := UnAssigned;
6865 varLoadParams := UnAssigned;
6966end;
7067```
7168
72-\
73-
7469## Öffnen eines vorhandenen Sheets und Speichern des Sheets
7570
7671``` pascal
7772 ...
7873var
7974 varCLApp: OleVariant;
8075 varDesktop: OleVariant;
8176 varSheets: OleVariant;
8277 varSheet1: OleVariant;
8378 varDokument: OleVariant;
8479 varLoadParams: OleVariant;
8580
8681begin
8782 // Erstellt das OleObjekt und erstellt den Zeiger darauf
8883 varCLApp := CreateOleObject('com.sun.star.ServiceManager');
8984 // Erstellt den Zeiger auf den Officedesktop
9085 varDesktop := varCLApp.createInstance('com.sun.star.frame.Desktop');
9186 // Erstellt ein leeres Array das für die Dokumentenerstellung benötigt wird
9287 varLoadParams := VarArrayCreate([0, -1], varVariant);
9388 // Öffnet ein vorhandenes Dokument (Workbook) und setzt den Zeiger darauf
9489 varDokument := varDesktop.LoadComponentFromURL('file:///D:/TestDatei.ods','_blank',0, varLoadParams);
9590 // Erstellt den Zeiger auf die Sheets
9691 varSheets := varDokument.getSheets();
9792 // Erstellt den Zeiger auf ein einzelnes Sheet
9893 varSheet1 := varSheets.getByIndex(0);
9994
10095 ...
10196
10297 // Speichert die Datei unter ihrem aktuellen Namen
10398 varDokument.store;
10499 varDokument.close(True);
105100 varDesktop.terminate; //Beendet die Anwendung
106101
107102 varCLApp := UnAssigned;
108103 varDesktop := UnAssigned;
109104 varSheets := UnAssigned;
110105 varSheet1 := UnAssigned;
111106 varDokument := UnAssigned;
112107 varLoadParams := UnAssigned;
113108end;
114109```
115110
116-\
117-
118111# Zellen und Ranges
119112
120-\
121113==Zellen adressieren== Beide Adressierungsmethoden sprechen die selbe Zelle an und liefern damit das selbe Ergebnis.\
122114
123115``` pascal
124116 ...
125117 // Schreibt in einen Bereich (eine Zelle) einen Wert
126118 // Der Berich ist der Name der Zelle z. B. A1
127119 varSheet1.getCellRangeByName('A1').setString('Txt 1');
128120 // schreibt in eine Zelle einen Wert
129121 // die Zählung der Zellen begint bei (0,0)
130122 // die Schreibweise lautet (Spalte, Zeile)
131123 varSheet1.getCellByPosition(0,0).setString('Txt 1');
132124 ...
133125```
134126
135-\
136-
137127## Arbeiten mit Umlauten
138128
139129Für die Verwendung von Umlauten usw. muss für die Stringkonvertierung die Unit lclproc eingebunden werden.
140130
141131``` pascal
142132var
143133 ...
144134 // zu beachten ist, dass der Übergabestring vom Datentyp Widestring sein muss
145135 wstrUebergabe: WideString;
146136 ...
147137begin
148138 ...
149139 // ohne den Puffer 'wstrUebergabe' kommt es bei der Verwendung von 'UTF8ToUTF16' zu Fehlern
150140 wstrUebergabe := UTF8ToUTF16('Bücher');
151141 varSheet1.getCellRangeByName('B2').setString(wstrUebergabe);
152142 // die Schreibweise:
153143 // varSheet1.getCellRangeByName('B2').setString(Utf8ToUtf16('Bücher'));
154144 // führt zu Fehlern
155145 ...
156146end;
157147```
158148
159-\
160149==Strings einfügen==
161150
162151``` pascal
163152var
164153 ...
165154 // Hilfsvariable
166155 wstrUebergabe: WideString;
167156begin
168157 ...
169158 wstrUebergabe := utf8toutf16('Bücher');
170159 varSheet1.getCellRangeByName('B2').setString(wstrUebergabe);
171160 wstrUebergabe := utf8toutf16('Lesezeichen');
172161 varSheet1.getCellRangeByName('B3').setString(wstrUebergabe);
173162 ...
174163end;
175164```
176165
177-\
178-
179166## Zahlen einfügen
180167
181168``` pascal
182169var
183170 ...
184171 // Hilfsvariable
185172 wstrUebergabe: WideString;
186173begin
187174 ...
188175 varSheet1.getCellRangeByName('C2').setValue(4);
189176 varSheet1.getCellRangeByName('C3').setValue(1);
190177 varSheet1.getCellRangeByName('C4').setValue(2);
191178 ...
192179end;
193180```
194-
195-\
196181
197182## Formeln einfügen
198183
199184``` pascal
200185var
201186 ...
202187 // Hilfsvariable
203188 wstrUebergabe: WideString;
204189begin
205190 ...
206191 wstrUebergabe := utf8toutf16('=C2*D2');
207192 varSheet1.getCellRangeByName('E2').setFormula(wstrUebergabe);
208193 wstrUebergabe := utf8toutf16('=C3*D3');
209194 varSheet1.getCellRangeByName('E3').setFormula(wstrUebergabe);
210195 wstrUebergabe := utf8toutf16('=C4*D4');
211196 varSheet1.getCellRangeByName('E4').setFormula(wstrUebergabe);
212197 ...
213198end;
214199```
215200
216201---
217202*From the Free Pascal wiki, page "CalcAutomation/de", as it stood on 2020-02-10 after a change by Trev, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*

Back to history