Difference between revisions of "CalcAutomation/de"
From Lazarus wiki
Jump to navigationJump to searchm (Fixed syntax highlighting; deleted category already in page template) |
|||
(15 intermediate revisions by 2 users not shown) | |||
Line 7: | Line 7: | ||
=Calc= | =Calc= | ||
<br> | <br> | ||
+ | ==Benötigte Units== | ||
+ | <syntaxhighlight lang="pascal"> | ||
+ | uses | ||
+ | ..., ComObj, Variants, LazUtf8, ...; | ||
+ | </syntaxhighlight> | ||
+ | |||
=Aufbau einer Steuerung für die Anwendung Calc= | =Aufbau einer Steuerung für die Anwendung Calc= | ||
<br> | <br> | ||
− | ==Erstellen eines neuen Sheets und | + | ==Erstellen eines neuen Sheets und Speichern unter einem neuen Namen== |
− | <syntaxhighlight> | + | <syntaxhighlight lang="pascal"> |
+ | |||
... | ... | ||
var | var | ||
Line 20: | Line 27: | ||
varDokument: OleVariant; | varDokument: OleVariant; | ||
varLoadParams: OleVariant; | varLoadParams: OleVariant; | ||
+ | strDateiname: shortstring; // nur Literale und Shortstrings sind automatisierbar | ||
begin | begin | ||
Line 38: | Line 46: | ||
... | ... | ||
+ | // Variante 1: | ||
// Speichert das Dokument unter einem neuen Namen | // Speichert das Dokument unter einem neuen Namen | ||
− | varDokument. | + | varDokument.StoreAsURL('file:///D:/test.ods', varLoadParams); |
+ | |||
+ | // Variante 2: | ||
+ | // Speichert das Dokument mit Umlauten im neuen Dateinamen | ||
+ | strDateiname := 'file:///D:/' + Utf8ToSys('täst.ods'); | ||
+ | varDokument.StoreAsURL(strDateiname, varLoadParams); | ||
+ | |||
+ | |||
// Schliesst das Dokument | // Schliesst das Dokument | ||
varDokument.close(True); | varDokument.close(True); | ||
Line 56: | Line 72: | ||
<br> | <br> | ||
− | ==Öffnen eines vorhandenen Sheets und | + | ==Öffnen eines vorhandenen Sheets und Speichern des Sheets== |
− | <syntaxhighlight> | + | <syntaxhighlight lang="pascal"> |
... | ... | ||
var | var | ||
Line 98: | Line 114: | ||
<br> | <br> | ||
+ | =Zellen und Ranges= | ||
+ | <br> | ||
==Zellen adressieren== | ==Zellen adressieren== | ||
Beide Adressierungsmethoden sprechen die selbe Zelle an und liefern damit das selbe Ergebnis.<br> | Beide Adressierungsmethoden sprechen die selbe Zelle an und liefern damit das selbe Ergebnis.<br> | ||
− | <syntaxhighlight> | + | <syntaxhighlight lang="pascal"> |
... | ... | ||
// Schreibt in einen Bereich (eine Zelle) einen Wert | // Schreibt in einen Bereich (eine Zelle) einen Wert | ||
Line 112: | Line 130: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<br> | <br> | ||
+ | |||
==Arbeiten mit Umlauten== | ==Arbeiten mit Umlauten== | ||
− | <syntaxhighlight> | + | Für die Verwendung von Umlauten usw. muss für die Stringkonvertierung die Unit lclproc eingebunden werden. |
+ | <syntaxhighlight lang="pascal"> | ||
var | var | ||
... | ... | ||
+ | // zu beachten ist, dass der Übergabestring vom Datentyp Widestring sein muss | ||
wstrUebergabe: WideString; | wstrUebergabe: WideString; | ||
... | ... | ||
Line 128: | Line 149: | ||
... | ... | ||
end; | end; | ||
− | </syntaxhighlight> | + | </syntaxhighlight> |
+ | <br> | ||
+ | ==Strings einfügen== | ||
+ | <syntaxhighlight lang="pascal"> | ||
+ | var | ||
+ | ... | ||
+ | // Hilfsvariable | ||
+ | wstrUebergabe: WideString; | ||
+ | begin | ||
+ | ... | ||
+ | wstrUebergabe := utf8toutf16('Bücher'); | ||
+ | varSheet1.getCellRangeByName('B2').setString(wstrUebergabe); | ||
+ | wstrUebergabe := utf8toutf16('Lesezeichen'); | ||
+ | varSheet1.getCellRangeByName('B3').setString(wstrUebergabe); | ||
+ | ... | ||
+ | end; | ||
+ | </syntaxhighlight> | ||
<br> | <br> | ||
+ | |||
+ | ==Zahlen einfügen== | ||
+ | <syntaxhighlight lang="pascal"> | ||
+ | var | ||
+ | ... | ||
+ | // Hilfsvariable | ||
+ | wstrUebergabe: WideString; | ||
+ | begin | ||
+ | ... | ||
+ | varSheet1.getCellRangeByName('C2').setValue(4); | ||
+ | varSheet1.getCellRangeByName('C3').setValue(1); | ||
+ | varSheet1.getCellRangeByName('C4').setValue(2); | ||
+ | ... | ||
+ | end; | ||
+ | </syntaxhighlight> | ||
<br> | <br> | ||
− | + | ||
− | + | ==Formeln einfügen== | |
+ | <syntaxhighlight lang="pascal"> | ||
+ | var | ||
+ | ... | ||
+ | // Hilfsvariable | ||
+ | wstrUebergabe: WideString; | ||
+ | begin | ||
+ | ... | ||
+ | wstrUebergabe := utf8toutf16('=C2*D2'); | ||
+ | varSheet1.getCellRangeByName('E2').setFormula(wstrUebergabe); | ||
+ | wstrUebergabe := utf8toutf16('=C3*D3'); | ||
+ | varSheet1.getCellRangeByName('E3').setFormula(wstrUebergabe); | ||
+ | wstrUebergabe := utf8toutf16('=C4*D4'); | ||
+ | varSheet1.getCellRangeByName('E4').setFormula(wstrUebergabe); | ||
+ | ... | ||
+ | end; | ||
+ | </syntaxhighlight> |
Latest revision as of 00:30, 11 February 2020
│
Deutsch (de) │
Zurück zur Office Automation.
Calc
Benötigte Units
uses
..., ComObj, Variants, LazUtf8, ...;
Aufbau einer Steuerung für die Anwendung Calc
Erstellen eines neuen Sheets und Speichern unter einem neuen Namen
...
var
// Reservieren des Speichers
varCLApp: OleVariant;
varDesktop: OleVariant;
varSheets: OleVariant;
varSheet1: OleVariant;
varDokument: OleVariant;
varLoadParams: OleVariant;
strDateiname: shortstring; // nur Literale und Shortstrings sind automatisierbar
begin
// Erstellt das OleObjekt und erstellt den Zeiger darauf
varCLApp := CreateOleObject('com.sun.star.ServiceManager');
// Erstellt den Zeiger auf den Officedesktop
varDesktop := varCLApp.createInstance('com.sun.star.frame.Desktop');
// Erstellt ein leeres Array das für die Dokumentenerstellung benötigt wird
varLoadParams := VarArrayCreate([0, -1], varVariant);
// Erstellt ein neues (leeres) Dokument (Workbook) und setzt den Zeiger darauf
varDokument := varDesktop.LoadComponentFromURL('private:factory/scalc','_blank',0, varLoadParams);
// Erstellt den Zeiger auf die Sheets
varSheets := varDokument.getSheets();
// Erstellt den Zeiger auf ein einzelnes Sheet
varSheet1 := varSheets.getByIndex(0);
...
// Variante 1:
// Speichert das Dokument unter einem neuen Namen
varDokument.StoreAsURL('file:///D:/test.ods', varLoadParams);
// Variante 2:
// Speichert das Dokument mit Umlauten im neuen Dateinamen
strDateiname := 'file:///D:/' + Utf8ToSys('täst.ods');
varDokument.StoreAsURL(strDateiname, varLoadParams);
// Schliesst das Dokument
varDokument.close(True);
//Beendet die Anwendung
varDesktop.terminate;
// Freigabe des Speichers
varCLApp := UnAssigned;
varDesktop := UnAssigned;
varSheets := UnAssigned;
varSheet1 := UnAssigned;
varDokument := UnAssigned;
varLoadParams := UnAssigned;
end;
Öffnen eines vorhandenen Sheets und Speichern des Sheets
...
var
varCLApp: OleVariant;
varDesktop: OleVariant;
varSheets: OleVariant;
varSheet1: OleVariant;
varDokument: OleVariant;
varLoadParams: OleVariant;
begin
// Erstellt das OleObjekt und erstellt den Zeiger darauf
varCLApp := CreateOleObject('com.sun.star.ServiceManager');
// Erstellt den Zeiger auf den Officedesktop
varDesktop := varCLApp.createInstance('com.sun.star.frame.Desktop');
// Erstellt ein leeres Array das für die Dokumentenerstellung benötigt wird
varLoadParams := VarArrayCreate([0, -1], varVariant);
// Öffnet ein vorhandenes Dokument (Workbook) und setzt den Zeiger darauf
varDokument := varDesktop.LoadComponentFromURL('file:///D:/TestDatei.ods','_blank',0, varLoadParams);
// Erstellt den Zeiger auf die Sheets
varSheets := varDokument.getSheets();
// Erstellt den Zeiger auf ein einzelnes Sheet
varSheet1 := varSheets.getByIndex(0);
...
// Speichert die Datei unter ihrem aktuellen Namen
varDokument.store;
varDokument.close(True);
varDesktop.terminate; //Beendet die Anwendung
varCLApp := UnAssigned;
varDesktop := UnAssigned;
varSheets := UnAssigned;
varSheet1 := UnAssigned;
varDokument := UnAssigned;
varLoadParams := UnAssigned;
end;
Zellen und Ranges
Zellen adressieren
Beide Adressierungsmethoden sprechen die selbe Zelle an und liefern damit das selbe Ergebnis.
...
// Schreibt in einen Bereich (eine Zelle) einen Wert
// Der Berich ist der Name der Zelle z. B. A1
varSheet1.getCellRangeByName('A1').setString('Txt 1');
// schreibt in eine Zelle einen Wert
// die Zählung der Zellen begint bei (0,0)
// die Schreibweise lautet (Spalte, Zeile)
varSheet1.getCellByPosition(0,0).setString('Txt 1');
...
Arbeiten mit Umlauten
Für die Verwendung von Umlauten usw. muss für die Stringkonvertierung die Unit lclproc eingebunden werden.
var
...
// zu beachten ist, dass der Übergabestring vom Datentyp Widestring sein muss
wstrUebergabe: WideString;
...
begin
...
// ohne den Puffer 'wstrUebergabe' kommt es bei der Verwendung von 'UTF8ToUTF16' zu Fehlern
wstrUebergabe := UTF8ToUTF16('Bücher');
varSheet1.getCellRangeByName('B2').setString(wstrUebergabe);
// die Schreibweise:
// varSheet1.getCellRangeByName('B2').setString(Utf8ToUtf16('Bücher'));
// führt zu Fehlern
...
end;
Strings einfügen
var
...
// Hilfsvariable
wstrUebergabe: WideString;
begin
...
wstrUebergabe := utf8toutf16('Bücher');
varSheet1.getCellRangeByName('B2').setString(wstrUebergabe);
wstrUebergabe := utf8toutf16('Lesezeichen');
varSheet1.getCellRangeByName('B3').setString(wstrUebergabe);
...
end;
Zahlen einfügen
var
...
// Hilfsvariable
wstrUebergabe: WideString;
begin
...
varSheet1.getCellRangeByName('C2').setValue(4);
varSheet1.getCellRangeByName('C3').setValue(1);
varSheet1.getCellRangeByName('C4').setValue(2);
...
end;
Formeln einfügen
var
...
// Hilfsvariable
wstrUebergabe: WideString;
begin
...
wstrUebergabe := utf8toutf16('=C2*D2');
varSheet1.getCellRangeByName('E2').setFormula(wstrUebergabe);
wstrUebergabe := utf8toutf16('=C3*D3');
varSheet1.getCellRangeByName('E3').setFormula(wstrUebergabe);
wstrUebergabe := utf8toutf16('=C4*D4');
varSheet1.getCellRangeByName('E4').setFormula(wstrUebergabe);
...
end;