Sign in Join
Wiki copytemporary

FPSpreadsheet/de: what changed

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

OldNewLine
11**DIESE SEITE IST VERALTET. BITTE VERWENDEN SIE DIE ENGLISCHE SEITE.**
22
3-Die fpSpreadsheet Bibliothek bietet einen praktischen Weg, Tabellenkalkulations-Dokumente in verschiedenen Formaten zu erzeugen und zu lesen. Die Bibliothek ist sehr flexibel gehalten und kann daher leicht erweitert werden, um weitere Formate zu unterstützen.
4-
5-## Contents
6-
7- * 1 API Dokumentation
8- * 1.1 API Referenz
9- * 1.2 Formeln
10- * 1.3 RPN-Formeln
11- * 1.3.1 Verwendung einfacher konstanter Zahlen
12- * 1.3.2 Verwendung von Zellbereichen und des unären Operators SUM
13- * 1.3.3 Verwendung eingebauter Routinen
14- * 1.4 Eingebaute Routinen
15- * 1.5 Packages
16- * 1.5.1 laz_fpspreadsheet.lpk
17- * 1.5.2 laz_fpspreadsheet_visual.lpk
18- * 2 Beispiele
19- * 2.1 Excel 5 Beispiel
20- * 2.2 Öffnen eines bestehenden Kalkulationsblattes
21- * 2.3 Schreiben eines Kalkulationsblattes in eine Datei abhängig von der Erweiterung
22- * 2.4 Iteration durch alle Arbeitsblätter
23- * 2.5 Daten aus einer Datenbank in eine Kalkulationstabelle konvertieren
24- * 2.6 Konvertierung zwischen zwei Tabellenkalkulationsformaten
25- * 2.7 Verwendung von Formatierungsoptionen
26- * 2.7.1 Einstellen der Textorientierung
27- * 2.7.2 Einstellen eines Randes
28- * 2.7.3 Einstellen einer Hintergrundfarbe
29- * 2.7.4 Kombination mehrerer Formatierungen
30- * 2.8 Gitter- und Diagramm-Steuerelemente mit FPSpreadsheet
31- * 3 Download
32- * 3.1 Subversion
33- * 3.2 Neueste Version
34- * 4 Unterstützung und Fehlerberichte
35- * 5 Aktueller Fortschritt
36- * 5.1 Fortschritt der Formatierungsoptionen
37- * 6 Änderungen
38- * 7 Lizenz
39- * 8 Siehe auch
40- * 9 Externe Links
3+Die fpSpreadsheet Bibliothek bietet einen praktischen Weg, Tabellenkalkulations-Dokumente in verschiedenen Formaten zu erzeugen und zu lesen. Die Bibliothek ist sehr flexibel gehalten und kann daher leicht erweitert werden, um weitere Formate zu unterstützen.
414
425## API Dokumentation
436
447### API Referenz
458
46-Eine Referenz im CHM-Format befindet sich hier:
9+Eine Referenz im CHM-Format befindet sich hier:
4710
4811<http://lazarus-ccr.svn.sourceforge.net/viewvc/lazarus-ccr/components/fpspreadsheet/fpspreadsheet.chm>
4912
5013### Formeln
5114
52-Zwei Arten von Formeln werden von FPSpreadsheet unterstützt: String-Formeln und RPN-Formeln. String-Formeln werden als Zeichenketten geschrieben, genau wie in der Office-Anwendung, zum Beispiel "ROUND(A1+B1)", während RPN-Formeln in [Umgekehrter Polnischer Notation](<http://de.wikipedia.org/wiki/Umgekehrte_Polnische_Notation>) (Reverse Polish Notation) geschrieben werden, zum Beispiel: A1, B1, Add, 0, ROUND
15+Zwei Arten von Formeln werden von FPSpreadsheet unterstützt: String-Formeln und RPN-Formeln. String-Formeln werden als Zeichenketten geschrieben, genau wie in der Office-Anwendung, zum Beispiel "ROUND(A1+B1)", während RPN-Formeln in [Umgekehrter Polnischer Notation](http://de.wikipedia.org/wiki/Umgekehrte_Polnische_Notation) (Reverse Polish Notation) geschrieben werden, zum Beispiel: A1, B1, Add, 0, ROUND
5316
5417### RPN-Formeln
5518
5619#### Verwendung einfacher konstanter Zahlen
57-```
20+
21+``` pascal
5822var
59- MyRPNFormula: TsRPNFormula;
60- begin
61- // Schreibt die Formel =4+5
62- MyWorksheet.WriteUTF8Text(3, 0, '=4+5'); // A4
63- //
64- SetLength(MyRPNFormula, 3);
65- MyRPNFormula[0].ElementKind := fekNum;
66- MyRPNFormula[0].DoubleValue := 4.0;
67- MyRPNFormula[1].ElementKind := fekNum;
68- MyRPNFormula[1].DoubleValue := 5.0;
69- MyRPNFormula[2].ElementKind := fekAdd;
70- MyWorksheet.WriteRPNFormula(3, 2, MyRPNFormula);
71- end;
23+ MyRPNFormula: TsRPNFormula;
24+begin
25+ // Schreibt die Formel =4+5
26+ MyWorksheet.WriteUTF8Text(3, 0, '=4+5'); // A4
27+ //
28+ SetLength(MyRPNFormula, 3);
29+ MyRPNFormula[0].ElementKind := fekNum;
30+ MyRPNFormula[0].DoubleValue := 4.0;
31+ MyRPNFormula[1].ElementKind := fekNum;
32+ MyRPNFormula[1].DoubleValue := 5.0;
33+ MyRPNFormula[2].ElementKind := fekAdd;
34+ MyWorksheet.WriteRPNFormula(3, 2, MyRPNFormula);
35+end;
7236```
7337
7438#### Verwendung von Zellbereichen und des unären Operators SUM
75-```
76-// =Sum(E2:e5)
77- MyWorksheet.WriteUTF8Text(1, 0, '=Sum(E2:e5)'); // A2
78- //
79- SetLength(MyRPNFormula, 2);
80- MyRPNFormula[0].ElementKind := fekCellRange;
81- MyRPNFormula[0].Row := 1;
82- MyRPNFormula[0].Row2 := 4;
83- MyRPNFormula[0].Col := 4;
84- MyRPNFormula[0].Col2 := 4;
85- MyRPNFormula[1].ElementKind := fekOpSUM;
86- MyWorksheet.WriteRPNFormula(1, 2, MyRPNFormula); // C2
39+
40+``` pascal
41+ // =Sum(E2:e5)
42+ MyWorksheet.WriteUTF8Text(1, 0, '=Sum(E2:e5)'); // A2
43+ //
44+ SetLength(MyRPNFormula, 2);
45+ MyRPNFormula[0].ElementKind := fekCellRange;
46+ MyRPNFormula[0].Row := 1;
47+ MyRPNFormula[0].Row2 := 4;
48+ MyRPNFormula[0].Col := 4;
49+ MyRPNFormula[0].Col2 := 4;
50+ MyRPNFormula[1].ElementKind := fekOpSUM;
51+ MyWorksheet.WriteRPNFormula(1, 2, MyRPNFormula); // C2
8752```
8853
8954#### Verwendung eingebauter Routinen
90-```
91-// Schreibt die Formel E1 = ABS(A1)
92- SetLength(MyRPNFormula, 2);
93- MyRPNFormula[0].ElementKind := fekCell;
94- MyRPNFormula[0].Col := 0;
95- MyRPNFormula[0].Row := 0;
96- MyRPNFormula[1].ElementKind := fekABS;
97- MyWorksheet.WriteRPNFormula(0, 4, MyRPNFormula);
98-
99- // Schreibt die Formel F1 = ROUND(A1, 0)
100- SetLength(MyRPNFormula, 3);
101- MyRPNFormula[0].ElementKind := fekCell;
102- MyRPNFormula[0].Col := 0;
103- MyRPNFormula[0].Row := 0;
104- MyRPNFormula[1].ElementKind := fekNum;
105- MyRPNFormula[1].DoubleValue := 0.0;
106- MyRPNFormula[2].ElementKind := fekROUND;
107- MyWorksheet.WriteRPNFormula(0, 5, MyRPNFormula);
55+
56+``` pascal
57+ // Schreibt die Formel E1 = ABS(A1)
58+ SetLength(MyRPNFormula, 2);
59+ MyRPNFormula[0].ElementKind := fekCell;
60+ MyRPNFormula[0].Col := 0;
61+ MyRPNFormula[0].Row := 0;
62+ MyRPNFormula[1].ElementKind := fekABS;
63+ MyWorksheet.WriteRPNFormula(0, 4, MyRPNFormula);
64+
65+ // Schreibt die Formel F1 = ROUND(A1, 0)
66+ SetLength(MyRPNFormula, 3);
67+ MyRPNFormula[0].ElementKind := fekCell;
68+ MyRPNFormula[0].Col := 0;
69+ MyRPNFormula[0].Row := 0;
70+ MyRPNFormula[1].ElementKind := fekNum;
71+ MyRPNFormula[1].DoubleValue := 0.0;
72+ MyRPNFormula[2].ElementKind := fekROUND;
73+ MyWorksheet.WriteRPNFormula(0, 5, MyRPNFormula);
10874```
10975
11076### Eingebaute Routinen
11177
112-**ABS** \- Gibt den absoluten Wert einer Zahl zurück. Benötigt wird 1 Argument. Beispiel: ABS(-1) = 1
78+**ABS** - Gibt den absoluten Wert einer Zahl zurück. Benötigt wird 1 Argument. Beispiel: ABS(-1) = 1
11379
114-**ROUND** \- Rundet eine Zahl auf eine bestimmte Anzahl von Dezimalstellen. Benötigt 2 Argumente, erstens die zu rundende Zahl und zweitens die Anzahl der Nachkommastellen. Dieses zweite Argument ist standardmäßig auf 0 gesetzt und kann auch negativ werden.
80+**ROUND** - Rundet eine Zahl auf eine bestimmte Anzahl von Dezimalstellen. Benötigt 2 Argumente, erstens die zu rundende Zahl und zweitens die Anzahl der Nachkommastellen. Dieses zweite Argument ist standardmäßig auf 0 gesetzt und kann auch negativ werden.
11581
11682### Packages
11783
118-FPSpreadsheet ist zum vereinfachten Gebrauch in folgende zwei Packages aufgeteilt:
84+FPSpreadsheet ist zum vereinfachten Gebrauch in folgende zwei Packages aufgeteilt:
11985
12086#### laz_fpspreadsheet.lpk
12187
122-Fügt alle nötigen Dateien hinzu, um 'fpspreadsheet' in Ihren Lazarus-Projekten zu verwenden. Nachdem Sie dieses Package als Anforderung in Ihrem Projekt hinzugefügt haben, ergänzen Sie die uses-Klausel der betroffenen Units mit "fpspreadsheet".
88+Fügt alle nötigen Dateien hinzu, um 'fpspreadsheet' in Ihren Lazarus-Projekten zu verwenden. Nachdem Sie dieses Package als Anforderung in Ihrem Projekt hinzugefügt haben, ergänzen Sie die uses-Klausel der betroffenen Units mit "fpspreadsheet".
12389
12490#### laz_fpspreadsheet_visual.lpk
12591
126-Stellt eine Reihe visueller Komponenten zur Verfügung, die die Möglichkeiten von FPSpreadsheet erweitern. Dazu gehört das Bearbeiten und Anzeigen von Daten aus Ihren LCL-Anwendungen heraus.
92+Stellt eine Reihe visueller Komponenten zur Verfügung, die die Möglichkeiten von FPSpreadsheet erweitern. Dazu gehört das Bearbeiten und Anzeigen von Daten aus Ihren LCL-Anwendungen heraus.
12793
128-Die folgenden LCL Komponenten werden mit diesem Package installiert:
94+Die folgenden LCL Komponenten werden mit diesem Package installiert:
12995
130- * [[TsWorksheetGrid]]
131- * [[TsWorksheetChartSource]]
96+- [[TsWorksheetGrid]]
97+- [[TsWorksheetChartSource]]
13298
13399## Beispiele
134100
135-Erzeugen Sie ein Projekt das die fpspreadsheet-Bibliothek benutzt, indem Sie das fpspreadsheet_pkg Package zu Ihrem Lazarus-Projekt hinzufügen, oder geben Sie das Basisverzeichnis von fpspreadsheet in Ihren Compileroptionen an, wenn Sie eine andere IDE verwenden.
101+Erzeugen Sie ein Projekt das die fpspreadsheet-Bibliothek benutzt, indem Sie das fpspreadsheet_pkg Package zu Ihrem Lazarus-Projekt hinzufügen, oder geben Sie das Basisverzeichnis von fpspreadsheet in Ihren Compileroptionen an, wenn Sie eine andere IDE verwenden.
136102
137103### Excel 5 Beispiel
138-```
104+
105+``` pascal
139106{
140- excel5demo.dpr
141-
142- Demonstriert, wie man eine Excel 5.x Datei schreibt unter Verwendung der fpspreadsheet-Bibliothek.
143-
144- Sie können das Ausgabe-Format festlegen indem Sie die Konstante OUTPUT_FORMAT ändern.
145-
146- AUTOR: Felipe Monteiro de Carvalho
147- }
148- program excel5demo;
149-
150- {$mode delphi}{$H+}
151-
152- uses
153- Classes, SysUtils, fpspreadsheet, fpsallformats, fpspreadsheet_pkg;
154-
155- const OUTPUT_FORMAT = sfExcel5;
156-
157- var
158- MyWorkbook: TsWorkbook;
159- MyWorksheet: TsWorksheet;
160- MyFormula: TsRPNFormula;
161- MyDir: string;
162- begin
163- // Initialisierung
164- MyDir := ExtractFilePath(ParamStr(0));
165-
166- // Create the spreadsheet
167- MyWorkbook := TsWorkbook.Create;
168- MyWorksheet := MyWorkbook.AddWorksheet('My Worksheet');
169-
170- // Write some number cells
171- MyWorksheet.WriteNumber(0, 0, 1.0);
172- MyWorksheet.WriteNumber(0, 1, 2.0);
173- MyWorksheet.WriteNumber(0, 2, 3.0);
174- MyWorksheet.WriteNumber(0, 3, 4.0);
175-
176- // Schreibt die Formel E1 = A1 + B1
177- // oder, in RPN: A1, B1, +
178- SetLength(MyFormula, 3);
179- MyFormula[0].ElementKind:=fekCell; {A1}
180- MyFormula[0].Col := 0;
181- MyFormula[0].Row := 0;
182- MyFormula[1].ElementKind:=fekCell; {B1}
183- MyFormula[1].Col := 1;
184- MyFormula[1].Row := 0;
185- MyFormula[2].ElementKind:=fekAdd;; {+}
186- MyWorksheet.WriteRPNFormula(0, 4, MyFormula);
187-
188- // Erzeugt ein neues Arbeitsblatt
189- MyWorksheet := MyWorkbook.AddWorksheet('My Worksheet 2');
190-
191- // Schreibt einige Zeichen in Zellen
192- MyWorksheet.WriteUTF8Text(0, 0, 'Erster');
193- MyWorksheet.WriteUTF8Text(0, 1, 'Zweiter');
194- MyWorksheet.WriteUTF8Text(0, 2, 'Dritter');
195- MyWorksheet.WriteUTF8Text(0, 3, 'Vierter');
196-
197- // Speichert das Kalkulationsblatt in eine Datei
198- MyWorkbook.WriteToFile(MyDir + 'test' + STR_EXCEL_EXTENSION, OUTPUT_FORMAT);
199- MyWorkbook.Free;
200- end.
107+excel5demo.dpr
108+
109+Demonstriert, wie man eine Excel 5.x Datei schreibt unter Verwendung der fpspreadsheet-Bibliothek.
110+
111+Sie können das Ausgabe-Format festlegen indem Sie die Konstante OUTPUT_FORMAT ändern.
112+
113+AUTOR: Felipe Monteiro de Carvalho
114+}
115+program excel5demo;
116+
117+{$mode delphi}{$H+}
118+
119+uses
120+ Classes, SysUtils, fpspreadsheet, fpsallformats, fpspreadsheet_pkg;
121+
122+const OUTPUT_FORMAT = sfExcel5;
123+
124+var
125+ MyWorkbook: TsWorkbook;
126+ MyWorksheet: TsWorksheet;
127+ MyFormula: TsRPNFormula;
128+ MyDir: string;
129+begin
130+ // Initialisierung
131+ MyDir := ExtractFilePath(ParamStr(0));
132+
133+ // Create the spreadsheet
134+ MyWorkbook := TsWorkbook.Create;
135+ MyWorksheet := MyWorkbook.AddWorksheet('My Worksheet');
136+
137+ // Write some number cells
138+ MyWorksheet.WriteNumber(0, 0, 1.0);
139+ MyWorksheet.WriteNumber(0, 1, 2.0);
140+ MyWorksheet.WriteNumber(0, 2, 3.0);
141+ MyWorksheet.WriteNumber(0, 3, 4.0);
142+
143+ // Schreibt die Formel E1 = A1 + B1
144+ // oder, in RPN: A1, B1, +
145+ SetLength(MyFormula, 3);
146+ MyFormula[0].ElementKind:=fekCell; {A1}
147+ MyFormula[0].Col := 0;
148+ MyFormula[0].Row := 0;
149+ MyFormula[1].ElementKind:=fekCell; {B1}
150+ MyFormula[1].Col := 1;
151+ MyFormula[1].Row := 0;
152+ MyFormula[2].ElementKind:=fekAdd;; {+}
153+ MyWorksheet.WriteRPNFormula(0, 4, MyFormula);
154+
155+ // Erzeugt ein neues Arbeitsblatt
156+ MyWorksheet := MyWorkbook.AddWorksheet('My Worksheet 2');
157+
158+ // Schreibt einige Zeichen in Zellen
159+ MyWorksheet.WriteUTF8Text(0, 0, 'Erster');
160+ MyWorksheet.WriteUTF8Text(0, 1, 'Zweiter');
161+ MyWorksheet.WriteUTF8Text(0, 2, 'Dritter');
162+ MyWorksheet.WriteUTF8Text(0, 3, 'Vierter');
163+
164+ // Speichert das Kalkulationsblatt in eine Datei
165+ MyWorkbook.WriteToFile(MyDir + 'test' + STR_EXCEL_EXTENSION, OUTPUT_FORMAT);
166+ MyWorkbook.Free;
167+end.
201168```
202169
203170### Öffnen eines bestehenden Kalkulationsblattes
204171
205-Um ein Kalkulationsblatt unter Angabe eines besonderen Formats zu öffnen, verwenden Sie ReadFromFile mit zwei Parametern:
206-```
172+Um ein Kalkulationsblatt unter Angabe eines besonderen Formats zu öffnen, verwenden Sie ReadFromFile mit zwei Parametern:
173+
174+``` pascal
207175MyWorkbook.ReadFromFile(AFileName, sfExcel5);
208176```
209177
210-Wird ReadFromFile mit nur einem Parameter aufgerufen, dann wird versucht, das Dateiformat anhand der Erweiterung zu erkennen. Im Falle mehrdeutiger Formate (wie bei Excel 2-8) werden einfach verschiedene Möglichkeiten probiert, bis eine funktioniert. In Zukunft könnte hier eine effizientere Überprüfung des Excel-Formats erfolgen.
211-```
178+Wird ReadFromFile mit nur einem Parameter aufgerufen, dann wird versucht, das Dateiformat anhand der Erweiterung zu erkennen. Im Falle mehrdeutiger Formate (wie bei Excel 2-8) werden einfach verschiedene Möglichkeiten probiert, bis eine funktioniert. In Zukunft könnte hier eine effizientere Überprüfung des Excel-Formats erfolgen.
179+
180+``` pascal
212181MyWorkbook.ReadFromFile(AFileName);
213182```
214183
215184### Schreiben eines Kalkulationsblattes in eine Datei abhängig von der Erweiterung
216185
217-Ähnlich der ReadFromFile-Routine, habe ich eine Prozedur WriteToFile implementiert (auch mit Vorschlägen und Verbesserungen von Felipe Monteiro de Carvalho), um den Typ eines Kalkulationsblattes anhand der Dateinamen-Erweiterung zu bestimmen. Sie nimmt die Routine getFormatFromFileName aus dem Code des vorigen Abschnitts, der Code ist also einfach. Trotzdem, beim Schreiben einer Datei mit vorgegebener Erweiterung, wird das jeweils neueste Format, das dieser Erweiterung zugeordnet ist, genommen (z.B. werden Excel .xls Dateien als sfExcel8 geschrieben). Falls Sie also ein früheres Format schreiben wollen, dann verwenden Sie bitte die Basisroutine.
186+Ähnlich der ReadFromFile-Routine, habe ich eine Prozedur WriteToFile implementiert (auch mit Vorschlägen und Verbesserungen von Felipe Monteiro de Carvalho), um den Typ eines Kalkulationsblattes anhand der Dateinamen-Erweiterung zu bestimmen. Sie nimmt die Routine getFormatFromFileName aus dem Code des vorigen Abschnitts, der Code ist also einfach. Trotzdem, beim Schreiben einer Datei mit vorgegebener Erweiterung, wird das jeweils neueste Format, das dieser Erweiterung zugeordnet ist, genommen (z.B. werden Excel .xls Dateien als sfExcel8 geschrieben). Falls Sie also ein früheres Format schreiben wollen, dann verwenden Sie bitte die Basisroutine.
218187
219-Wie oben, modifiziert dieser Code die Unit fpspreadsheet.pas.
220-```
188+Wie oben, modifiziert dieser Code die Unit fpspreadsheet.pas.
189+
190+``` pascal
221191procedure TsWorkbook.WriteToFile(const AFileName: string; const AOverwriteExisting: Boolean = False); overload;
222- var SheetType: TsSpreadsheetFormat;
223- begin
224- if getFormatFromFileName(AFileName, SheetType) then
225- WriteToFile(AFileName, SheetType, AOverwriteExisting)
226- else raise Exception.Create(Format(
227- '[TsWorkbook.WriteToFile] Attempted to save a spreadsheet by extension, but the extension %s is invalid.', [ExtractFileExt(AFileName)]));
228- end;
192+var SheetType: TsSpreadsheetFormat;
193+begin
194+ if getFormatFromFileName(AFileName, SheetType) then
195+ WriteToFile(AFileName, SheetType, AOverwriteExisting)
196+ else raise Exception.Create(Format(
197+ '[TsWorkbook.WriteToFile] Attempted to save a spreadsheet by extension, but the extension %s is invalid.', [ExtractFileExt(AFileName)]));
198+end;
229199```
230200
231201### Iteration durch alle Arbeitsblätter
232-```
202+
203+``` pascal
233204var
234- MyWorkbook: TsWorkbook;
235- MyWorksheet: TsWorksheet;
236- i: Integer;
237- begin
238- // Hier wird MyWorkbook aus einer Datei geladen oder neu erzeugt
239-
240- for i := 0 to MyWorkbook.GetWorksheetCount() - 1 do
241- begin
242- MyWorksheet := MyWorkbook.GetWorksheetByIndex(i);
243- // Mach etwas mit MyWorksheet
244- end;
205+ MyWorkbook: TsWorkbook;
206+ MyWorksheet: TsWorksheet;
207+ i: Integer;
208+begin
209+ // Hier wird MyWorkbook aus einer Datei geladen oder neu erzeugt
210+
211+ for i := 0 to MyWorkbook.GetWorksheetCount() - 1 do
212+ begin
213+ MyWorksheet := MyWorkbook.GetWorksheetByIndex(i);
214+ // Mach etwas mit MyWorksheet
215+ end;
245216```
246217
247218### Daten aus einer Datenbank in eine Kalkulationstabelle konvertieren
248219
249-Beachten Sie, dass es sich hier um nicht getesteten Meta-Code handelt.
250-```
220+Beachten Sie, dass es sich hier um nicht getesteten Meta-Code handelt.
221+
222+``` pascal
251223program db5xls;
252-
253- {$mode delphi}{$H+}
254-
255- uses
256- Classes, SysUtils,
257- // alle notwendigen Datenbank-Units hinzufügen
258- fpspreadsheet, fpsallformats, fpspreadsheet_pkg;
259-
260- const OUTPUT_FORMAT = sfExcel5;
261-
262- var
263- MyWorkbook: TsWorkbook;
264- MyWorksheet: TsWorksheet;
265- MyDatabase: TSdfDataset;
266- MyDir: string;
267- i, j: Integer;
268- begin
269- // Initialisierung
270- MyDir := ExtractFilePath(ParamStr(0));
271-
272- // die Datenbank öffnen
273- MyDatabase := TSdfDataset.Create;
274- MyDatabase.Filename := 'test.dat';
275- // hier die Tabellenbeschreibung hinzufügen
276- MyDatabase.Active := True;
277-
278- // Erzeugt die Kalkulationstabelle
279- MyWorkbook := TsWorkbook.Create;
280- MyWorksheet := MyWorkbook.AddWorksheet('My Worksheet');
281-
282- // die Feldnamen schreiben
283- for i := 0 to MyDatabase.Fields.Count - 1 do
284- MyWorksheet.WriteUTF8Text(0, i, MyDatabase.Field[i].FieldName);
285-
286- // alle Felder in das Arbeitsblatt schreiben
287- MyDatabase.First;
288- j := 0;
289- while not MyDatabase.EOF do
290- begin
291- for i := 0 to MyDatabase.Fields.Count - 1 do
292- MyWorksheet.WriteUTF8Text(j + 1, i, MyDatabase.Field[i].AsString);
293-
294- MyDatabase.Next;
295- Inc(j);
296- end;
297-
298- // die Datenbank schließen
299- MyDatabase.Active := False;
300- MyDatabase.Free;
301-
302- // Save the spreadsheet to a file
303- MyWorkbook.WriteToFile(MyDir + 'test' + STR_EXCEL_EXTENSION, OUTPUT_FORMAT);
304- MyWorkbook.Free;
305- end.
224+
225+{$mode delphi}{$H+}
226+
227+uses
228+ Classes, SysUtils,
229+ // alle notwendigen Datenbank-Units hinzufügen
230+ fpspreadsheet, fpsallformats, fpspreadsheet_pkg;
231+
232+const OUTPUT_FORMAT = sfExcel5;
233+
234+var
235+ MyWorkbook: TsWorkbook;
236+ MyWorksheet: TsWorksheet;
237+ MyDatabase: TSdfDataset;
238+ MyDir: string;
239+ i, j: Integer;
240+begin
241+ // Initialisierung
242+ MyDir := ExtractFilePath(ParamStr(0));
243+
244+ // die Datenbank öffnen
245+ MyDatabase := TSdfDataset.Create;
246+ MyDatabase.Filename := 'test.dat';
247+ // hier die Tabellenbeschreibung hinzufügen
248+ MyDatabase.Active := True;
249+
250+ // Erzeugt die Kalkulationstabelle
251+ MyWorkbook := TsWorkbook.Create;
252+ MyWorksheet := MyWorkbook.AddWorksheet('My Worksheet');
253+
254+ // die Feldnamen schreiben
255+ for i := 0 to MyDatabase.Fields.Count - 1 do
256+ MyWorksheet.WriteUTF8Text(0, i, MyDatabase.Field[i].FieldName);
257+
258+ // alle Felder in das Arbeitsblatt schreiben
259+ MyDatabase.First;
260+ j := 0;
261+ while not MyDatabase.EOF do
262+ begin
263+ for i := 0 to MyDatabase.Fields.Count - 1 do
264+ MyWorksheet.WriteUTF8Text(j + 1, i, MyDatabase.Field[i].AsString);
265+
266+ MyDatabase.Next;
267+ Inc(j);
268+ end;
269+
270+ // die Datenbank schließen
271+ MyDatabase.Active := False;
272+ MyDatabase.Free;
273+
274+ // Save the spreadsheet to a file
275+ MyWorkbook.WriteToFile(MyDir + 'test' + STR_EXCEL_EXTENSION, OUTPUT_FORMAT);
276+ MyWorkbook.Free;
277+end.
306278```
307279
308280### Konvertierung zwischen zwei Tabellenkalkulationsformaten
309281
310-Beachten Sie, dass es sich hier um nicht getesteten Meta-Code handelt.
311-```
282+Beachten Sie, dass es sich hier um nicht getesteten Meta-Code handelt.
283+
284+``` pascal
312285program ods2xls;
313-
314- {$mode delphi}{$H+}
315-
316- uses
317- Classes, SysUtils,
318- fpspreadsheet, fpsallformats, fpspreadsheet_pkg;
319-
320- const
321- INPUT_FORMAT = sfOpenDocument;
322- OUTPUT_FORMAT = sfExcel8;
323-
324- var
325- MyWorkbook: TsWorkbook;
326- MyDir: string;
327- begin
328- // Initialisierung
329- MyDir := ExtractFilePath(ParamStr(0));
330-
331- // Konvertiert die Kalkulationstabelle
332- MyWorkbook := TsWorkbook.Create;
333- try
334- MyWorkbook.ReadFromFile(MyDir + 'test.ods', INPUT_FORMAT);
335- MyWorkbook.WriteToFile(MyDir + 'test.xls', OUTPUT_FORMAT);
336- finally
337- MyWorkbook.Free;
338- end;
339- end.
286+
287+{$mode delphi}{$H+}
288+
289+uses
290+ Classes, SysUtils,
291+ fpspreadsheet, fpsallformats, fpspreadsheet_pkg;
292+
293+const
294+ INPUT_FORMAT = sfOpenDocument;
295+ OUTPUT_FORMAT = sfExcel8;
296+
297+var
298+ MyWorkbook: TsWorkbook;
299+ MyDir: string;
300+begin
301+ // Initialisierung
302+ MyDir := ExtractFilePath(ParamStr(0));
303+
304+ // Konvertiert die Kalkulationstabelle
305+ MyWorkbook := TsWorkbook.Create;
306+ try
307+ MyWorkbook.ReadFromFile(MyDir + 'test.ods', INPUT_FORMAT);
308+ MyWorkbook.WriteToFile(MyDir + 'test.xls', OUTPUT_FORMAT);
309+ finally
310+ MyWorkbook.Free;
311+ end;
312+end.
340313```
341314
342315### Verwendung von Formatierungsoptionen
343316
344-Die Formatierung wird unabhängig vom Text gesetzt wie im folgenden Beispiel:
345-```
346-// Erzeugt einen fett geschriebenen Text
347- MyWorksheet.WriteUTF8Text(0, 0, 'First');
348- MyWorksheet.WriteUsedFormatting(0, 0, [uffBold]);
317+Die Formatierung wird unabhängig vom Text gesetzt wie im folgenden Beispiel:
318+
319+``` pascal
320+ // Erzeugt einen fett geschriebenen Text
321+ MyWorksheet.WriteUTF8Text(0, 0, 'First');
322+ MyWorksheet.WriteUsedFormatting(0, 0, [uffBold]);
349323```
350324
351325#### Einstellen der Textorientierung
352326
353-Es gibt drei mögliche Textrichtungen: trHorizontal, rt90DegreeClockwiseRotation and rt90DegreeCounterClockwiseRotation
327+Es gibt drei mögliche Textrichtungen: trHorizontal, rt90DegreeClockwiseRotation and rt90DegreeCounterClockwiseRotation
354328
355-Sie sind relativ zur Standardausrichtung des Textes.
356-```
357-// Schreibt in Fettschrift
358- MyWorksheet.WriteUTF8Text(0, 0, 'First');
359- MyCell := MyWorksheet.GetCell(0, 0);
360- MyCell^.TextRotation := rt90DegreeClockwiseRotation;
361- MyCell^.UsedFormattingFields := [uffTextRotation];
329+Sie sind relativ zur Standardausrichtung des Textes.
330+
331+``` pascal
332+ // Schreibt in Fettschrift
333+ MyWorksheet.WriteUTF8Text(0, 0, 'First');
334+ MyCell := MyWorksheet.GetCell(0, 0);
335+ MyCell^.TextRotation := rt90DegreeClockwiseRotation;
336+ MyCell^.UsedFormattingFields := [uffTextRotation];
362337```
363338
364339#### Einstellen eines Randes
365-```
366-// Schreibt einen Text mit Rand und Hintergrundfarbe
367- MyWorksheet.WriteUTF8Text(5, 9, '[N,W,E,S]');// J6
368- MyCell := MyWorksheet.GetCell(5, 9);
369- MyCell^.Border := [cbNorth, cbWest, cbEast, cbSouth];
370- MyCell^.UsedFormattingFields := [uffBorder, uffBold, uffBackgroundColor];
340+
341+``` pascal
342+ // Schreibt einen Text mit Rand und Hintergrundfarbe
343+ MyWorksheet.WriteUTF8Text(5, 9, '[N,W,E,S]');// J6
344+ MyCell := MyWorksheet.GetCell(5, 9);
345+ MyCell^.Border := [cbNorth, cbWest, cbEast, cbSouth];
346+ MyCell^.UsedFormattingFields := [uffBorder, uffBold, uffBackgroundColor];
371347```
372348
373349#### Einstellen einer Hintergrundfarbe
374350
375-Sie können eine von 16 Farben aus einer Palette für den Hintergrund auswählen. Die möglichen Werte sind:
376-```
377-{@@ Farben in FPSpreadsheet wie festgelegt in einer Excel-kompatiblen Palette }
378-
379- TsColor = (
380- scBlack, // 000000H
381- scWhite, // FFFFFFH
382- scRed, // FF0000H
383- scGREEN, // 00FF00H
384- scBLUE, // 0000FFH
385- scYELLOW, // FFFF00H
386- scMAGENTA, // FF00FFH
387- scCYAN, // 00FFFFH
388- scDarkRed, // 800000H
389- scDarkGreen,// 008000H
390- scDarkBlue, // 000080H
391- scOLIVE, // 808000H
392- scPURPLE, // 800080H
393- scTEAL, // 008080H
394- scSilver, // C0C0C0H
395- scGrey // 808080H
396- //
397- scGrey10pct,// E6E6E6H
398- scGrey20pct // CCCCCCH
399- );
400-```
351+Sie können eine von 16 Farben aus einer Palette für den Hintergrund auswählen. Die möglichen Werte sind:
401352
402-Und ein Beispiel:
353+``` pascal
354+ {@@ Farben in FPSpreadsheet wie festgelegt in einer Excel-kompatiblen Palette }
355+
356+ TsColor = (
357+ scBlack, // 000000H
358+ scWhite, // FFFFFFH
359+ scRed, // FF0000H
360+ scGREEN, // 00FF00H
361+ scBLUE, // 0000FFH
362+ scYELLOW, // FFFF00H
363+ scMAGENTA, // FF00FFH
364+ scCYAN, // 00FFFFH
365+ scDarkRed, // 800000H
366+ scDarkGreen,// 008000H
367+ scDarkBlue, // 000080H
368+ scOLIVE, // 808000H
369+ scPURPLE, // 800080H
370+ scTEAL, // 008080H
371+ scSilver, // C0C0C0H
372+ scGrey // 808080H
373+ //
374+ scGrey10pct,// E6E6E6H
375+ scGrey20pct // CCCCCCH
376+ );
403377```
404-// Schreibt einen Text mit Hintergrundfarbe
405- MyWorksheet.WriteUTF8Text(0, 0, 'Test');
406- MyCell := MyWorksheet.GetCell(0, 0);
407- MyCell^.BackgroundColor := scSilver;
408- MyCell^.UsedFormattingFields := [uffBackgroundColor];
378+
379+Und ein Beispiel:
380+
381+``` pascal
382+ // Schreibt einen Text mit Hintergrundfarbe
383+ MyWorksheet.WriteUTF8Text(0, 0, 'Test');
384+ MyCell := MyWorksheet.GetCell(0, 0);
385+ MyCell^.BackgroundColor := scSilver;
386+ MyCell^.UsedFormattingFields := [uffBackgroundColor];
409387```
410388
411389#### Kombination mehrerer Formatierungen
412-```
413-// Schreibt einen Text mit Rand und mit Hintergrundfarbe
414- MyWorksheet.WriteUTF8Text(5, 9, '[N,W,E,S]');
415- MyCell := MyWorksheet.GetCell(5, 9);
416- MyCell^.Border := [cbNorth, cbWest, cbEast, cbSouth];
417- MyCell^.UsedFormattingFields := [uffBorder, uffBold, uffBackgroundColor];
390+
391+``` pascal
392+ // Schreibt einen Text mit Rand und mit Hintergrundfarbe
393+ MyWorksheet.WriteUTF8Text(5, 9, '[N,W,E,S]');
394+ MyCell := MyWorksheet.GetCell(5, 9);
395+ MyCell^.Border := [cbNorth, cbWest, cbEast, cbSouth];
396+ MyCell^.UsedFormattingFields := [uffBorder, uffBold, uffBackgroundColor];
418397```
419398
420399### Gitter- und Diagramm-Steuerelemente mit FPSpreadsheet
421400
422401Siehe [[TsWorksheetChartSource]]
423402
424403## Download
425404
426405### Subversion
427406
428-Sie können FPSpreadsheet mit dem folgenden Befehl herunterladen unter Verwendung von Subversion:
429-```
430-svn checkout svn://svn.code.sf.net/p/lazarus-ccr/svn/components/fpspreadsheet fpspreadsheet
431-```
407+Sie können FPSpreadsheet mit dem folgenden Befehl herunterladen unter Verwendung von Subversion:
432408
409+ svn checkout svn://svn.code.sf.net/p/lazarus-ccr/svn/components/fpspreadsheet fpspreadsheet
410+
433411### Neueste Version
434412
435-Die neueste Version finden Sie hier auf SourceForge:
413+Die neueste Version finden Sie hier auf SourceForge:
436414
437415<https://sourceforge.net/projects/lazarus-ccr/files/FPSpreadsheet/>
438416
439417## Unterstützung und Fehlerberichte
440418
441-Diskussionen zum Thema FPSpreadsheet sollten im Lazarus Forum: <http://www.lazarus.freepascal.org/index.php/board,42.0.html> geführt werden. Dort wird man auch am ehesten Unterstützung erhalten.
419+Diskussionen zum Thema FPSpreadsheet sollten im Lazarus Forum: <http://www.lazarus.freepascal.org/index.php/board,42.0.html> geführt werden. Dort wird man auch am ehesten Unterstützung erhalten.
442420
443421Fehlerberichte sollten an den Pascal Bug Tracker im Abschnitt "Lazarus-CCR" gesendet werden: <http://bugs.freepascal.org/>
444422
445423## Aktueller Fortschritt
446424
447-Fortschritte nach unterstützten Formaten:
425+Fortschritte nach unterstützten Formaten:
448426
449-**Format** | **Unterstützt mehrere Blätter?** | **Unterstützt Unicode?** | **Reader Fortschritt** | **Writer Fortschritt** | **Text** | **Zahl** | **String Formel** | **RPN Formel** | **Datum/Zeit**
450----|---|---|---|---|---|---|---|---|---
451-CSV | Nein | Ja | nicht implementiert | nicht implementiert | nicht implementiert | nicht implementiert | nicht implementiert | nicht implementiert | nicht implementiert
452-Excel 2.x | Nein | Nein** | Working | Working | Working | Working | nicht implementiert | Working | nicht implementiert
453-Excel 3.0 | Nein | Nein** | nicht implementiert | nicht implementiert | nicht implementiert | nicht implementiert | nicht implementiert | nicht implementiert | nicht implementiert
454-Excel 4.0 | Nein | Nein** | nicht implementiert | nicht implementiert | nicht implementiert | nicht implementiert | nicht implementiert | nicht implementiert | nicht implementiert
455-Excel 5.0 (Excel 5.0 and 95) | Ja | Nein** | Working* | Working | Working | Working | nicht implementiert | Working | nicht implementiert
456-Excel 8.0 (Excel 97, 2000, XP and 2003) | Ja | Ja | Working* | Working | Working | Working | nicht implementiert | Working | Read only and dates only
457-Microsoft OOXML | Ja | Ja | nicht implementiert | Working | nicht implementiert | nicht implementiert | nicht implementiert | nicht implementiert | nicht implementiert
458-OpenDocument | Ja | Ja | Working | Working | Working | Working | nicht implementiert | nicht implementiert | nicht implementiert
459-
460-(*) Einige Zellen könnten leer bleiben aufgrund fehlender oder noch nicht implementierter Zahlen- und Textformate.
461-(**) In Formaten, die nicht Unicode unterstützen, werden die Daten als ISO 8859-1 (Latin 1)gespeichert. Sie können die Kodierung in TsWorkbook.Encoding ändern. Beachten Sie: FPSpreadsheet bietet Lese- und Schreibroutinen für UTF-8, aber die Daten könnten beim Lesen oder Schreiben auf Disk zu ISO konvertiert werden. Zeichen, die nicht zur ausgewählten Kodierung passen, gehen bei diesen Operationen verloren. Die Anmerkungen hier sind nur gültig für Formate, die Unicode nicht unterstützen.
427+| **Format** | **Unterstützt mehrere Blätter?** | **Unterstützt Unicode?** | **Reader Fortschritt** | **Writer Fortschritt** | **Text** | **Zahl** | **String Formel** | **RPN Formel** | **Datum/Zeit** |
428+|----|----|----|----|----|----|----|----|----|----|
429+| CSV | Nein | Ja | nicht implementiert | nicht implementiert | nicht implementiert | nicht implementiert | nicht implementiert | nicht implementiert | nicht implementiert |
430+| Excel 2.x | Nein | Nein** | Working | Working | Working | Working | nicht implementiert | Working | nicht implementiert |
431+| Excel 3.0 | Nein | Nein** | nicht implementiert | nicht implementiert | nicht implementiert | nicht implementiert | nicht implementiert | nicht implementiert | nicht implementiert |
432+| Excel 4.0 | Nein | Nein** | nicht implementiert | nicht implementiert | nicht implementiert | nicht implementiert | nicht implementiert | nicht implementiert | nicht implementiert |
433+| Excel 5.0 (Excel 5.0 and 95) | Ja | Nein** | Working* | Working | Working | Working | nicht implementiert | Working | nicht implementiert |
434+| Excel 8.0 (Excel 97, 2000, XP and 2003) | Ja | Ja | Working* | Working | Working | Working | nicht implementiert | Working | Read only and dates only |
435+| Microsoft OOXML | Ja | Ja | nicht implementiert | Working | nicht implementiert | nicht implementiert | nicht implementiert | nicht implementiert | nicht implementiert |
436+| OpenDocument | Ja | Ja | Working | Working | Working | Working | nicht implementiert | nicht implementiert | nicht implementiert |
462437
438+(*) Einige Zellen könnten leer bleiben aufgrund fehlender oder noch nicht implementierter Zahlen- und Textformate.\
439+(**) In Formaten, die nicht Unicode unterstützen, werden die Daten als ISO 8859-1 (Latin 1)gespeichert. Sie können die Kodierung in TsWorkbook.Encoding ändern. Beachten Sie: FPSpreadsheet bietet Lese- und Schreibroutinen für UTF-8, aber die Daten könnten beim Lesen oder Schreiben auf Disk zu ISO konvertiert werden. Zeichen, die nicht zur ausgewählten Kodierung passen, gehen bei diesen Operationen verloren. Die Anmerkungen hier sind nur gültig für Formate, die Unicode nicht unterstützen.
440+
463441### Fortschritt der Formatierungsoptionen
464442
465-Einige Formatierungsoptionen wurden hinzugefügt, aber sie sind noch nicht für alle Formate implementiert:
443+Einige Formatierungsoptionen wurden hinzugefügt, aber sie sind noch nicht für alle Formate implementiert:
466444
467-**Format** | **Textrotation** | **Fett** | **Rahmen** | **Hintergrundfarbe**
468----|---|---|---|---
469-CSV | nicht verfügbar | nicht verfügbar | nicht verfügbar | nicht verfügbar
470-Excel 2.x | nicht implementiert | nicht implementiert | nicht implementiert | nicht implementiert
471-Excel 3.0 | nicht implementiert | nicht implementiert | nicht implementiert | nicht implementiert
472-Excel 4.0 | nicht implementiert | nicht implementiert | nicht implementiert | nicht implementiert
473-Excel 5.0 (Excel 5.0 and 95) | - | - | nicht implementiert | nicht implementiert
474-Excel 8.0 (Excel 97, 2000, XP and 2003) | Working | Working | Working | Working
475-Microsoft OOXML | nicht implementiert | Working | nicht implementiert | nicht implementiert
476-OpenDocument | Working | Working | Working | Working
477-
445+| **Format** | **Textrotation** | **Fett** | **Rahmen** | **Hintergrundfarbe** |
446+|----|----|----|----|----|
447+| CSV | nicht verfügbar | nicht verfügbar | nicht verfügbar | nicht verfügbar |
448+| Excel 2.x | nicht implementiert | nicht implementiert | nicht implementiert | nicht implementiert |
449+| Excel 3.0 | nicht implementiert | nicht implementiert | nicht implementiert | nicht implementiert |
450+| Excel 4.0 | nicht implementiert | nicht implementiert | nicht implementiert | nicht implementiert |
451+| Excel 5.0 (Excel 5.0 and 95)\|\|-\|\|- | nicht implementiert | nicht implementiert | | |
452+| Excel 8.0 (Excel 97, 2000, XP and 2003) | Working | Working | Working | Working |
453+| Microsoft OOXML | nicht implementiert | Working | nicht implementiert | nicht implementiert |
454+| OpenDocument | Working | Working | Working | Working |
455+
478456## Änderungen
479457
480-November 2011
458+November 2011
481459
482- * Released version 1.0, which includes OO XML generation support with bold formating supported and also a lot of improvements from the last years
460+- Released version 1.0, which includes OO XML generation support with bold formating supported and also a lot of improvements from the last years
483461
484-Januar 2009
462+Januar 2009
485463
486- * Implemented a cross-platform support for OLE file. Now Excel 5.0 files can be created in any operating system.
487- * Adds read support for Excel 2.1
464+- Implemented a cross-platform support for OLE file. Now Excel 5.0 files can be created in any operating system.
465+- Adds read support for Excel 2.1
488466
489-Februar 2008
467+Februar 2008
490468
491- * Initial commit to lazarus-ccr with write support for Excel 2.1, Excel 5.0 (Windows only) and experimental OOXML and OpenDocument
469+- Initial commit to lazarus-ccr with write support for Excel 2.1, Excel 5.0 (Windows only) and experimental OOXML and OpenDocument
492470
493471## Lizenz
494472
495-LGPL with static linking exception. Dies ist die selbe Lizenz wie sie von der Lazarus Component Library verwendet wird.
473+LGPL with static linking exception. Dies ist die selbe Lizenz wie sie von der Lazarus Component Library verwendet wird.
496474
497475## Siehe auch
498476
499- * [[Office Automation]]
500- * [[CsvDocument]]
477+- [[Office Automation]]
478+- [[CsvDocument]]
501479
502480## Externe Links
503481
504- * Microsoft OLE Document Format - <http://sc.openoffice.org/compdocfileformat.pdf>
505- * Excel-Dateiformat-Beschreibung - <http://sc.openoffice.org/excelfileformat.pdf>
482+- Microsoft OLE Document Format - <http://sc.openoffice.org/compdocfileformat.pdf>
483+- Excel-Dateiformat-Beschreibung - <http://sc.openoffice.org/excelfileformat.pdf>
506484
507485---
508-*From the Free Pascal wiki, page "FPSpreadsheet/de", as the Internet Archive kept it on 2025-04-21. 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).*
486+*From the Free Pascal wiki, page "FPSpreadsheet/de", as it stood on 2020-02-16 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