Difference between revisions of "FPSpreadsheet/de"

From Lazarus wiki
Jump to navigationJump to search
m
m (full update and translation)
Line 17: Line 17:
 
=== RPN-Formeln ===
 
=== RPN-Formeln ===
  
Ein Beispiel für die Verwendung eingebauter Routinen:
+
====Verwendung einfacher konstanter Zahlen====
 +
 
 +
<delphi>
 +
var
 +
  MyRPNFormula: TsRPNFormula;
 +
begin
 +
  // Schreibt die Formel =4+5
 +
  MyWorksheet.WriteUTF8Text(3, 0, '=4+5'); // A4
 +
  //
 +
  SetLength(MyRPNFormula, 3);
 +
  MyRPNFormula[0].ElementKind := fekNum;
 +
  MyRPNFormula[0].DoubleValue := 4.0;
 +
  MyRPNFormula[1].ElementKind := fekNum;
 +
  MyRPNFormula[1].DoubleValue := 5.0;
 +
  MyRPNFormula[2].ElementKind := fekAdd;
 +
  MyWorksheet.WriteRPNFormula(3, 2, MyRPNFormula);
 +
end;
 +
</delphi>
 +
 
 +
====Verwendung von Zellbereichen und des unären Operators SUM====
 +
 
 +
<delphi>
 +
  // =Sum(E2:e5)
 +
  MyWorksheet.WriteUTF8Text(1, 0, '=Sum(E2:e5)'); // A2
 +
  //
 +
  SetLength(MyRPNFormula, 2);
 +
  MyRPNFormula[0].ElementKind := fekCellRange;
 +
  MyRPNFormula[0].Row := 1;
 +
  MyRPNFormula[0].Row2 := 4;
 +
  MyRPNFormula[0].Col := 4;
 +
  MyRPNFormula[0].Col2 := 4;
 +
  MyRPNFormula[1].ElementKind := fekOpSUM;
 +
  MyWorksheet.WriteRPNFormula(1, 2, MyRPNFormula);  // C2
 +
</delphi>
 +
 
 +
====Verwendung eingebauter Routinen====
  
 
<delphi>
 
<delphi>
Line 49: Line 84:
 
FPSpreadsheet ist zum vereinfachten Gebrauch in folgende zwei Packages aufgeteilt:
 
FPSpreadsheet ist zum vereinfachten Gebrauch in folgende zwei Packages aufgeteilt:
  
==== laz_fpspreadsheet.lpk ====
+
====laz_fpspreadsheet.lpk====
  
 
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".
 
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".
  
==== laz_fpspreadsheet_visual.lpk ====
+
====laz_fpspreadsheet_visual.lpk====
  
 
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.
 
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.
Line 72: Line 107:
 
excel5demo.dpr
 
excel5demo.dpr
  
Demonstriert, wie man eine Excel 5.x Datei schreibt unter Verwendung der fpspreadsheet-Bibliothek
+
Demonstriert, wie man eine Excel 5.x Datei schreibt unter Verwendung der fpspreadsheet-Bibliothek.
  
Sie können das Ausgabe-Format festlegen indem Sie die Konstante OUTPUT_FORMAT ändern.
+
Sie können das Ausgabe-Format festlegen indem Sie die Konstante OUTPUT_FORMAT ändern.
  
 
AUTOR: Felipe Monteiro de Carvalho
 
AUTOR: Felipe Monteiro de Carvalho
Line 106: Line 141:
 
   MyWorksheet.WriteNumber(0, 3, 4.0);
 
   MyWorksheet.WriteNumber(0, 3, 4.0);
  
   // Schreibt die Formal E1 = A1 + B1
+
   // Schreibt die Formel E1 = A1 + B1
 
   // oder, in RPN: A1, B1, +
 
   // oder, in RPN: A1, B1, +
 
   SetLength(MyFormula, 3);
 
   SetLength(MyFormula, 3);
Line 127: Line 162:
 
   MyWorksheet.WriteUTF8Text(0, 3, 'Vierter');
 
   MyWorksheet.WriteUTF8Text(0, 3, 'Vierter');
  
   // Save the spreadsheet to a file
+
   // Speichert das Kalkulationsblatt in eine Datei
 
   MyWorkbook.WriteToFile(MyDir + 'test' + STR_EXCEL_EXTENSION, OUTPUT_FORMAT);
 
   MyWorkbook.WriteToFile(MyDir + 'test' + STR_EXCEL_EXTENSION, OUTPUT_FORMAT);
 
   MyWorkbook.Free;
 
   MyWorkbook.Free;
Line 147: Line 182:
 
   begin
 
   begin
 
     MyWorksheet := MyWorkbook.GetWorksheetByIndex(i);
 
     MyWorksheet := MyWorkbook.GetWorksheetByIndex(i);
     // Tue etwas mit MyWorksheet
+
     // Mach etwas mit MyWorksheet
 
   end;
 
   end;
 
</delphi>
 
</delphi>
  
=== Daten aus einer Datenbank in eine Tabellenkalkulation übernehmen ===
+
===Daten aus einer Datenbank in eine Kalkulationstabelle konvertieren===
  
 
Beachten Sie, dass es sich hier um nicht getesteten Meta-Code handelt.
 
Beachten Sie, dass es sich hier um nicht getesteten Meta-Code handelt.
Line 183: Line 218:
 
   MyDatabase.Active := True;
 
   MyDatabase.Active := True;
  
   // Create the spreadsheet
+
   // Erzeugt die Kalkulationstabelle
 
   MyWorkbook := TsWorkbook.Create;
 
   MyWorkbook := TsWorkbook.Create;
 
   MyWorksheet := MyWorkbook.AddWorksheet('My Worksheet');
 
   MyWorksheet := MyWorkbook.AddWorksheet('My Worksheet');
Line 213: Line 248:
 
</delphi>
 
</delphi>
  
=== Konvertierung zwischen zwei Tabellenkalkulationsformaten ===
+
===Konvertierung zwischen zwei Tabellenkalkulationsformaten===
  
 
Beachten Sie, dass es sich hier um nicht getesteten Meta-Code handelt.
 
Beachten Sie, dass es sich hier um nicht getesteten Meta-Code handelt.
Line 237: Line 272:
 
   MyDir := ExtractFilePath(ParamStr(0));
 
   MyDir := ExtractFilePath(ParamStr(0));
 
   
 
   
   // Convert the spreadsheet
+
   // Konvertiert die Kalkulationstabelle
 
   MyWorkbook := TsWorkbook.Create;
 
   MyWorkbook := TsWorkbook.Create;
 
   try
 
   try
Line 257: Line 292:
 
   MyWorksheet.WriteUsedFormatting(0, 0, [uffBold]);
 
   MyWorksheet.WriteUsedFormatting(0, 0, [uffBold]);
 
</delphi>
 
</delphi>
 +
 +
====Einstellen der Textorientierung====
 +
 +
Es gibt drei mögliche Textrichtungen: trHorizontal, rt90DegreeClockwiseRotation and rt90DegreeCounterClockwiseRotation
 +
 +
Sie sind relativ zur Standardausrichtung des Textes.
 +
 +
<delphi>
 +
  // Schreibt in Fettschrift
 +
  MyWorksheet.WriteUTF8Text(0, 0, 'First');
 +
  MyCell := MyWorksheet.GetCell(0, 0);
 +
  MyCell^.TextRotation := rt90DegreeClockwiseRotation;
 +
  MyCell^.UsedFormattingFields := [uffTextRotation];
 +
</delphi>
 +
 +
====Einstellen eines Randes====
 +
 +
<delphi>
 +
  // Schreibt einen Text mit Rand und Hintergrundfarbe
 +
  MyWorksheet.WriteUTF8Text(5, 9, '[N,W,E,S]');// J6
 +
  MyCell := MyWorksheet.GetCell(5, 9);
 +
  MyCell^.Border := [cbNorth, cbWest, cbEast, cbSouth];
 +
  MyCell^.UsedFormattingFields := [uffBorder, uffBold, uffBackgroundColor];
 +
</delphi>
 +
 +
====Einstellen einer Hintergrundfarbe====
 +
 +
Sie können eine von 16 Farben aus einer Palette für den Hintergrund auswählen. Die möglichen Werte sind:
 +
 +
<delphi>
 +
  {@@ Farben in FPSpreadsheet wie festgelegt in einer Excel-kompatiblen Palette }
 +
 +
  TsColor = (
 +
    scBlack,    // 000000H
 +
    scWhite,    // FFFFFFH
 +
    scRed,      // FF0000H
 +
    scGREEN,    // 00FF00H
 +
    scBLUE,    // 0000FFH
 +
    scYELLOW,  // FFFF00H
 +
    scMAGENTA,  // FF00FFH
 +
    scCYAN,    // 00FFFFH
 +
    scDarkRed,  // 800000H
 +
    scDarkGreen,// 008000H
 +
    scDarkBlue, // 000080H
 +
    scOLIVE,    // 808000H
 +
    scPURPLE,  // 800080H
 +
    scTEAL,    // 008080H
 +
    scSilver,  // C0C0C0H
 +
    scGrey      // 808080H
 +
    //
 +
    scGrey10pct,// E6E6E6H
 +
    scGrey20pct // CCCCCCH
 +
  );
 +
</delphi>
 +
 +
Und ein Beispiel:
 +
 +
<delphi>
 +
  // Schreibt einen Text mit Hintergrundfarbe
 +
  MyWorksheet.WriteUTF8Text(0, 0, 'Test');
 +
  MyCell := MyWorksheet.GetCell(0, 0);
 +
  MyCell^.BackgroundColor := scSilver;
 +
  MyCell^.UsedFormattingFields := [uffBackgroundColor];
 +
</delphi>
 +
 +
====Kombination mehrerer Formatierungen====
 +
 +
<delphi>
 +
  // Schreibt einen Text mit Rand und mit Hintergrundfarbe
 +
  MyWorksheet.WriteUTF8Text(5, 9, '[N,W,E,S]');
 +
  MyCell := MyWorksheet.GetCell(5, 9);
 +
  MyCell^.Border := [cbNorth, cbWest, cbEast, cbSouth];
 +
  MyCell^.UsedFormattingFields := [uffBorder, uffBold, uffBackgroundColor];
 +
</delphi>
 +
 +
===Gitter- und Diagramm-Steuerelemente mit FPSpreadsheet===
 +
 +
Siehe [[TsWorksheetChartSource]]
  
 
== Download ==
 
== Download ==
Line 270: Line 383:
 
== Aktueller Fortschritt ==
 
== Aktueller Fortschritt ==
  
Progress by supported format:
+
Fortschritte nach unterstützten Formaten:
  
 
{| BORDER="1" CELLSPACING="0"
 
{| BORDER="1" CELLSPACING="0"
 
!COLSPAN="1" STYLE="background:#ffdead;"|'''Format'''
 
!COLSPAN="1" STYLE="background:#ffdead;"|'''Format'''
!COLSPAN="1" STYLE="background:#ffdead;"|'''Supports multiple sheets?'''
+
!COLSPAN="1" STYLE="background:#ffdead;"|'''Unterstützt mehrere Blätter?'''
 
!COLSPAN="1" STYLE="background:#ffdead;"|'''Unterstützt Unicode?'''
 
!COLSPAN="1" STYLE="background:#ffdead;"|'''Unterstützt Unicode?'''
!COLSPAN="1" STYLE="background:#ffdead;"|'''Reader Progress'''
+
!COLSPAN="1" STYLE="background:#ffdead;"|'''Reader Fortschritt'''
!COLSPAN="1" STYLE="background:#ffdead;"|'''Writer Progress'''
+
!COLSPAN="1" STYLE="background:#ffdead;"|'''Writer Fortschritt'''
 
!COLSPAN="1" STYLE="background:#ffdead;"|'''Text'''
 
!COLSPAN="1" STYLE="background:#ffdead;"|'''Text'''
!COLSPAN="1" STYLE="background:#ffdead;"|'''Number'''
+
!COLSPAN="1" STYLE="background:#ffdead;"|'''Zahl'''
 
!COLSPAN="1" STYLE="background:#ffdead;"|'''String Formel'''
 
!COLSPAN="1" STYLE="background:#ffdead;"|'''String Formel'''
 
!COLSPAN="1" STYLE="background:#ffdead;"|'''RPN Formel'''
 
!COLSPAN="1" STYLE="background:#ffdead;"|'''RPN Formel'''
Line 291: Line 404:
 
|Excel 5.0 (Excel 5.0 und 95)||Ja||Nein**||Working*||Working||Working||Working||Nicht implementiert||Working
 
|Excel 5.0 (Excel 5.0 und 95)||Ja||Nein**||Working*||Working||Working||Working||Nicht implementiert||Working
 
|----
 
|----
|Excel 8.0 (Excel 97, 2000, XP und 2003)||Ja||Ja||Working*||Working||Working||Working||Nicht implementiert||Nicht implementiert
+
|Excel 8.0 (Excel 97, 2000, XP und 2003)||Ja||Ja||Working*||Working||Working||Working||Nicht implementiert||Working
 
|----
 
|----
 
|Microsoft OOXML||Ja||Ja||Nicht implementiert||Nicht implementiert||Nicht implementiert||Nicht implementiert||Nicht implementiert||Nicht implementiert
 
|Microsoft OOXML||Ja||Ja||Nicht implementiert||Nicht implementiert||Nicht implementiert||Nicht implementiert||Nicht implementiert||Nicht implementiert
Line 298: Line 411:
 
|}
 
|}
  
(*) Some cell could be returned blank due missing or non ready implemented number and text formats.<br>
+
(*) Einige Zellen könnten leer bleiben aufgrund fehlender oder noch nicht implementierter Zahlen- und Textformate.<br>
(**) In formats which don't support Unicode the data is stored by default as ISO 8859-1 (Latin 1). You can change the encoding in TsWorkbook.Encoding. Note that FPSpreadsheet offers UTF-8 read and write routines, but the data might be converted to ISO when reading or writing to the disk. Be careful that characters which don't fit selected encoding will be lost in those operations. The remarks here are only valid for formats which don't support Unicode.
+
(**) 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.
  
 
=== Fortschritt der Formatierungsoptionen ===
 
=== Fortschritt der Formatierungsoptionen ===
Line 309: Line 422:
 
!COLSPAN="1" STYLE="background:#ffdead;"|'''Textrotation'''
 
!COLSPAN="1" STYLE="background:#ffdead;"|'''Textrotation'''
 
!COLSPAN="1" STYLE="background:#ffdead;"|'''Fett'''
 
!COLSPAN="1" STYLE="background:#ffdead;"|'''Fett'''
 +
!COLSPAN="1" STYLE="background:#ffdead;"|'''Rand'''
 +
!COLSPAN="1" STYLE="background:#ffdead;"|'''Hintergrundfarbe'''
 
|----
 
|----
|Excel 2.x||Nicht implementiert||Nicht implementiert
+
|Excel 2.x||Not implemented||Not implemented||Not implemented||Not implemented
 
|----
 
|----
|Excel 3.0||Nicht implementiert||Nicht implementiert
+
|Excel 3.0||Not implemented||Not implemented||Not implemented||Not implemented
 
|----
 
|----
|Excel 4.0||Nicht implementiert||Nicht implementiert
+
|Excel 4.0||Not implemented||Not implemented||Not implemented||Not implemented
 
|----
 
|----
|Excel 5.0 (Excel 5.0 und 95)||-||-
+
|Excel 5.0 (Excel 5.0 und 95)||-||-||Not implemented||Not implemented
 
|----
 
|----
|Excel 8.0 (Excel 97, 2000, XP und 2003)||Working||Working
+
|Excel 8.0 (Excel 97, 2000, XP und 2003)||Working||Working||Working||Working
 
|----
 
|----
|Microsoft OOXML||Nicht implementiert||Nicht implementiert
+
|Microsoft OOXML||Not implemented||Not implemented||Not implemented||Not implemented
 
|----
 
|----
|OpenDocument||Working||Working
+
|OpenDocument||Working||Working||Working||Working
 
|}
 
|}
  
== Changelog ==
+
== Änderungen ==
  
 
Jan 2009
 
Jan 2009
Line 337: Line 452:
  
 
== Lizenz ==
 
== Lizenz ==
 
 
LGPL with static linking exception. Dies ist die selbe Lizenz wie sie von der Lazarus Component Library verwendet wird.
 
LGPL with static linking exception. Dies ist die selbe Lizenz wie sie von der Lazarus Component Library verwendet wird.
  
Line 348: Line 462:
 
* Microsoft OLE Document Format - http://sc.openoffice.org/compdocfileformat.pdf
 
* Microsoft OLE Document Format - http://sc.openoffice.org/compdocfileformat.pdf
 
* Excel-Dateiformat-Beschreibung - http://sc.openoffice.org/excelfileformat.pdf
 
* Excel-Dateiformat-Beschreibung - http://sc.openoffice.org/excelfileformat.pdf
 +
 +
[[Category:Components]]

Revision as of 19:35, 12 June 2011

Deutsch (de) English (en) español (es) français (fr) polski (pl) русский (ru)

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.

API Dokumentation

API Referenz

Eine Referenz im CHM-Format befindet sich hier:

http://lazarus-ccr.svn.sourceforge.net/viewvc/lazarus-ccr/components/fpspreadsheet/fpspreadsheet.chm

Formeln

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 (Reverse Polish Notation) geschrieben werden, zum Beispiel: A1, B1, Add, 0, ROUND

RPN-Formeln

Verwendung einfacher konstanter Zahlen

<delphi> var

 MyRPNFormula: TsRPNFormula;

begin

 // Schreibt die Formel =4+5
 MyWorksheet.WriteUTF8Text(3, 0, '=4+5'); // A4
 //
 SetLength(MyRPNFormula, 3);
 MyRPNFormula[0].ElementKind := fekNum;
 MyRPNFormula[0].DoubleValue := 4.0;
 MyRPNFormula[1].ElementKind := fekNum;
 MyRPNFormula[1].DoubleValue := 5.0;
 MyRPNFormula[2].ElementKind := fekAdd;
 MyWorksheet.WriteRPNFormula(3, 2, MyRPNFormula);

end; </delphi>

Verwendung von Zellbereichen und des unären Operators SUM

<delphi>

 // =Sum(E2:e5)
 MyWorksheet.WriteUTF8Text(1, 0, '=Sum(E2:e5)'); // A2
 //
 SetLength(MyRPNFormula, 2);
 MyRPNFormula[0].ElementKind := fekCellRange;
 MyRPNFormula[0].Row := 1;
 MyRPNFormula[0].Row2 := 4;
 MyRPNFormula[0].Col := 4;
 MyRPNFormula[0].Col2 := 4;
 MyRPNFormula[1].ElementKind := fekOpSUM;
 MyWorksheet.WriteRPNFormula(1, 2, MyRPNFormula);   // C2

</delphi>

Verwendung eingebauter Routinen

<delphi>

 // Schreibt die Formel E1 = ABS(A1)
 SetLength(MyRPNFormula, 2);
 MyRPNFormula[0].ElementKind := fekCell;
 MyRPNFormula[0].Col := 0;
 MyRPNFormula[0].Row := 0;
 MyRPNFormula[1].ElementKind := fekABS;
 MyWorksheet.WriteRPNFormula(0, 4, MyRPNFormula);
 // Schreibt die Formel F1 = ROUND(A1, 0)
 SetLength(MyRPNFormula, 3);
 MyRPNFormula[0].ElementKind := fekCell;
 MyRPNFormula[0].Col := 0;
 MyRPNFormula[0].Row := 0;
 MyRPNFormula[1].ElementKind := fekNum;
 MyRPNFormula[1].DoubleValue := 0.0;
 MyRPNFormula[2].ElementKind := fekROUND;
 MyWorksheet.WriteRPNFormula(0, 5, MyRPNFormula);

</delphi>

Eingebaute Routinen

ABS - Gibt den absoluten Wert einer Zahl zurück. Benötigt wird 1 Argument. Beispiel: ABS(-1) = 1

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.

Packages

FPSpreadsheet ist zum vereinfachten Gebrauch in folgende zwei Packages aufgeteilt:

laz_fpspreadsheet.lpk

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

laz_fpspreadsheet_visual.lpk

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.

Die folgenden LCL Komponenten werden mit diesem Package installiert:

Beispiele

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.

Excel 5 Beispiel

<delphi> { excel5demo.dpr

Demonstriert, wie man eine Excel 5.x Datei schreibt unter Verwendung der fpspreadsheet-Bibliothek.

Sie können das Ausgabe-Format festlegen indem Sie die Konstante OUTPUT_FORMAT ändern.

AUTOR: Felipe Monteiro de Carvalho } program excel5demo;

{$mode delphi}{$H+}

uses

 Classes, SysUtils, fpspreadsheet, fpsallformats, fpspreadsheet_pkg;

const OUTPUT_FORMAT = sfExcel5;

var

 MyWorkbook: TsWorkbook;
 MyWorksheet: TsWorksheet;
 MyFormula: TsRPNFormula;
 MyDir: string;

begin

 // Initialisierung
 MyDir := ExtractFilePath(ParamStr(0));
 // Create the spreadsheet
 MyWorkbook := TsWorkbook.Create;
 MyWorksheet := MyWorkbook.AddWorksheet('My Worksheet');
 // Write some number cells
 MyWorksheet.WriteNumber(0, 0, 1.0);
 MyWorksheet.WriteNumber(0, 1, 2.0);
 MyWorksheet.WriteNumber(0, 2, 3.0);
 MyWorksheet.WriteNumber(0, 3, 4.0);
 // Schreibt die Formel E1 = A1 + B1
 // oder, in RPN: A1, B1, +
 SetLength(MyFormula, 3);
 MyFormula[0].ElementKind:=fekCell; {A1}
 MyFormula[0].Col := 0;
 MyFormula[0].Row := 0;
 MyFormula[1].ElementKind:=fekCell; {B1}
 MyFormula[1].Col := 1;
 MyFormula[1].Row := 0;
 MyFormula[2].ElementKind:=fekAdd;;  {+}
 MyWorksheet.WriteRPNFormula(0, 4, MyFormula);
 // Erzeugt ein neues Arbeitsblatt
 MyWorksheet := MyWorkbook.AddWorksheet('My Worksheet 2');
 // Schreibt einige Zeichen in Zellen
 MyWorksheet.WriteUTF8Text(0, 0, 'Erster');
 MyWorksheet.WriteUTF8Text(0, 1, 'Zweiter');
 MyWorksheet.WriteUTF8Text(0, 2, 'Dritter');
 MyWorksheet.WriteUTF8Text(0, 3, 'Vierter');
 // Speichert das Kalkulationsblatt in eine Datei
 MyWorkbook.WriteToFile(MyDir + 'test' + STR_EXCEL_EXTENSION, OUTPUT_FORMAT);
 MyWorkbook.Free;

end. </delphi>


Iteration durch alle Arbeitsblätter

<delphi> var

 MyWorkbook: TsWorkbook;
 MyWorksheet: TsWorksheet;
 i: Integer;

begin

 // Hier wird MyWorkbook aus einer Datei geladen oder neu erzeugt

 for i := 0 to MyWorkbook.GetWorksheetCount() - 1 do
 begin
   MyWorksheet := MyWorkbook.GetWorksheetByIndex(i);
   // Mach etwas mit MyWorksheet
 end;

</delphi>

Daten aus einer Datenbank in eine Kalkulationstabelle konvertieren

Beachten Sie, dass es sich hier um nicht getesteten Meta-Code handelt.

<delphi> program db5xls;

{$mode delphi}{$H+}

uses

 Classes, SysUtils, 
 // alle notwendigen Datenbank-Units hinzufügen
 fpspreadsheet, fpsallformats, fpspreadsheet_pkg;

const OUTPUT_FORMAT = sfExcel5;

var

 MyWorkbook: TsWorkbook;
 MyWorksheet: TsWorksheet;
 MyDatabase: TSdfDataset;
 MyDir: string;
 i, j: Integer;

begin

 // Initialisierung
 MyDir := ExtractFilePath(ParamStr(0));

 // die Datenbank öffnen
 MyDatabase := TSdfDataset.Create;
 MyDatabase.Filename := 'test.dat';
 // hier die Tabellenbeschreibung hinzufügen
 MyDatabase.Active := True;
 // Erzeugt die Kalkulationstabelle
 MyWorkbook := TsWorkbook.Create;
 MyWorksheet := MyWorkbook.AddWorksheet('My Worksheet');

 // die Feldnamen schreiben
 for i := 0 to MyDatabase.Fields.Count - 1 do
   MyWorksheet.WriteUTF8Text(0, i, MyDatabase.Field[i].FieldName);
 // alle Felder in das Arbeitsblatt schreiben
 MyDatabase.First;
 j := 0;
 while not MyDatabase.EOF do
 begin
   for i := 0 to MyDatabase.Fields.Count - 1 do
     MyWorksheet.WriteUTF8Text(j + 1, i, MyDatabase.Field[i].AsString);
   MyDatabase.Next;
   Inc(j);
 end;
 // die Datenbank schließen
 MyDatabase.Active := False;
 MyDatabase.Free;
 // Save the spreadsheet to a file
 MyWorkbook.WriteToFile(MyDir + 'test' + STR_EXCEL_EXTENSION, OUTPUT_FORMAT);
 MyWorkbook.Free;

end. </delphi>

Konvertierung zwischen zwei Tabellenkalkulationsformaten

Beachten Sie, dass es sich hier um nicht getesteten Meta-Code handelt.

<delphi> program ods2xls;

{$mode delphi}{$H+}

uses

 Classes, SysUtils, 
 fpspreadsheet, fpsallformats, fpspreadsheet_pkg;

const

 INPUT_FORMAT = sfOpenDocument;
 OUTPUT_FORMAT = sfExcel8;

var

 MyWorkbook: TsWorkbook;
 MyDir: string;

begin

 // Initialisierung
 MyDir := ExtractFilePath(ParamStr(0));

 // Konvertiert die Kalkulationstabelle
 MyWorkbook := TsWorkbook.Create;
 try
   MyWorkbook.ReadFromFile(MyDir + 'test.ods', INPUT_FORMAT);
   MyWorkbook.WriteToFile(MyDir + 'test.xls', OUTPUT_FORMAT);
 finally
   MyWorkbook.Free;
 end;

end. </delphi>

Verwendung von Formatierungsoptionen

Die Formatierung wird unabhängig vom Text gesetzt wie im folgenden Beispiel:

<delphi>

 // Erzeugt einen fett geschriebenen Text
 MyWorksheet.WriteUTF8Text(0, 0, 'First');
 MyWorksheet.WriteUsedFormatting(0, 0, [uffBold]);

</delphi>

Einstellen der Textorientierung

Es gibt drei mögliche Textrichtungen: trHorizontal, rt90DegreeClockwiseRotation and rt90DegreeCounterClockwiseRotation

Sie sind relativ zur Standardausrichtung des Textes.

<delphi>

 // Schreibt in Fettschrift
 MyWorksheet.WriteUTF8Text(0, 0, 'First');
 MyCell := MyWorksheet.GetCell(0, 0);
 MyCell^.TextRotation := rt90DegreeClockwiseRotation;
 MyCell^.UsedFormattingFields := [uffTextRotation];

</delphi>

Einstellen eines Randes

<delphi>

 // Schreibt einen Text mit Rand und Hintergrundfarbe
 MyWorksheet.WriteUTF8Text(5, 9, '[N,W,E,S]');// J6
 MyCell := MyWorksheet.GetCell(5, 9);
 MyCell^.Border := [cbNorth, cbWest, cbEast, cbSouth];
 MyCell^.UsedFormattingFields := [uffBorder, uffBold, uffBackgroundColor];

</delphi>

Einstellen einer Hintergrundfarbe

Sie können eine von 16 Farben aus einer Palette für den Hintergrund auswählen. Die möglichen Werte sind:

<delphi>

 {@@ Farben in FPSpreadsheet wie festgelegt in einer Excel-kompatiblen Palette }
 TsColor = (
   scBlack,    // 000000H
   scWhite,    // FFFFFFH
   scRed,      // FF0000H
   scGREEN,    // 00FF00H
   scBLUE,     // 0000FFH
   scYELLOW,   // FFFF00H
   scMAGENTA,  // FF00FFH
   scCYAN,     // 00FFFFH
   scDarkRed,  // 800000H
   scDarkGreen,// 008000H
   scDarkBlue, // 000080H
   scOLIVE,    // 808000H
   scPURPLE,   // 800080H
   scTEAL,     // 008080H
   scSilver,   // C0C0C0H
   scGrey      // 808080H
   //
   scGrey10pct,// E6E6E6H
   scGrey20pct // CCCCCCH
 );

</delphi>

Und ein Beispiel:

<delphi>

 // Schreibt einen Text mit Hintergrundfarbe
 MyWorksheet.WriteUTF8Text(0, 0, 'Test');
 MyCell := MyWorksheet.GetCell(0, 0);
 MyCell^.BackgroundColor := scSilver;
 MyCell^.UsedFormattingFields := [uffBackgroundColor];

</delphi>

Kombination mehrerer Formatierungen

<delphi>

 // Schreibt einen Text mit Rand und mit Hintergrundfarbe
 MyWorksheet.WriteUTF8Text(5, 9, '[N,W,E,S]');
 MyCell := MyWorksheet.GetCell(5, 9);
 MyCell^.Border := [cbNorth, cbWest, cbEast, cbSouth];
 MyCell^.UsedFormattingFields := [uffBorder, uffBold, uffBackgroundColor];

</delphi>

Gitter- und Diagramm-Steuerelemente mit FPSpreadsheet

Siehe TsWorksheetChartSource

Download

Subversion

Sie können FPSpreadsheet mit dem folgenden Befehl herunterladen unter Verwendung von Subversion:

svn co https://lazarus-ccr.svn.sourceforge.net/svnroot/lazarus-ccr/components/fpspreadsheet fpspreadsheet

Aktueller Fortschritt

Fortschritte nach unterstützten Formaten:

Format Unterstützt mehrere Blätter? Unterstützt Unicode? Reader Fortschritt Writer Fortschritt Text Zahl String Formel RPN Formel
Excel 2.x Nein Nein** Working Working Working Working Nicht implementiert Working
Excel 3.0 Nein Nein** Nicht implementiert Nicht implementiert Nicht implementiert Nicht implementiert Nicht implementiert Nicht implementiert
Excel 4.0 Nein Nein** Nicht implementiert Nicht implementiert Nicht implementiert Nicht implementiert Nicht implementiert Nicht implementiert
Excel 5.0 (Excel 5.0 und 95) Ja Nein** Working* Working Working Working Nicht implementiert Working
Excel 8.0 (Excel 97, 2000, XP und 2003) Ja Ja Working* Working Working Working Nicht implementiert Working
Microsoft OOXML Ja Ja Nicht implementiert Nicht implementiert Nicht implementiert Nicht implementiert Nicht implementiert Nicht implementiert
OpenDocument Ja Ja Working Working Working Working Nicht implementiert Nicht implementiert

(*) Einige Zellen könnten leer bleiben aufgrund fehlender oder noch nicht implementierter Zahlen- und Textformate.
(**) 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.

Fortschritt der Formatierungsoptionen

Einige Formatierungsoptionen wurden hinzugefügt, aber sie sind noch nicht für alle Formate implementiert:

Format Textrotation Fett Rand Hintergrundfarbe
Excel 2.x Not implemented Not implemented Not implemented Not implemented
Excel 3.0 Not implemented Not implemented Not implemented Not implemented
Excel 4.0 Not implemented Not implemented Not implemented Not implemented
Excel 5.0 (Excel 5.0 und 95) - - Not implemented Not implemented
Excel 8.0 (Excel 97, 2000, XP und 2003) Working Working Working Working
Microsoft OOXML Not implemented Not implemented Not implemented Not implemented
OpenDocument Working Working Working Working

Änderungen

Jan 2009

  • Implemented a cross-platform support for OLE file. Now Excel 5.0 files can be created in any operating system.
  • Adds read support for Excel 2.1

Feb 2008

  • Initial commit to lazarus-ccr with write support for Excel 2.1, Excel 5.0 (Windows only) and experimental OOXML and OpenDocument

Lizenz

LGPL with static linking exception. Dies ist die selbe Lizenz wie sie von der Lazarus Component Library verwendet wird.

Siehe auch

Externe Links