Difference between revisions of "FPSpreadsheet/de"

From Free Pascal wiki
Jump to navigationJump to search
m (Fixed syntax highlighting; deleted category included in page template)
 
(14 intermediate revisions by 6 users not shown)
Line 1: Line 1:
 
{{FPSpreadsheet}}
 
{{FPSpreadsheet}}
  
The fpSpreadsheet library offers a convenient way to generate and read spreadsheet documents in various formats. The library is written in a very flexible manner, capable of being extended to support any number of formats easily.
+
<span style="color:#FF0000">'''DIESE SEITE IST VERALTET. BITTE VERWENDEN SIE DIE ENGLISCHE SEITE.'''</span>
 +
 
 +
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 Dokumentation ==
Line 13: Line 15:
 
=== Formeln ===
 
=== 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 [http://de.wikipedia.org/wiki/Umgekehrte_Polnische_Notation Umgekehrter Polnischer Notation] (Reverse Polish Notation) geschrieben werden, zum Beispiel: A1, B1, Add, 0, ROUND
+
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 [http://de.wikipedia.org/wiki/Umgekehrte_Polnische_Notation Umgekehrter Polnischer Notation] (Reverse Polish Notation) geschrieben werden, zum Beispiel: A1, B1, Add, 0, ROUND
  
 
=== RPN-Formeln ===
 
=== RPN-Formeln ===
  
Ein Beispiel für die Verwendung eingebauter Routinen:
+
====Verwendung einfacher konstanter Zahlen====
 +
 
 +
<syntaxhighlight lang=pascal>
 +
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;
 +
</syntaxhighlight>
 +
 
 +
====Verwendung von Zellbereichen und des unären Operators SUM====
 +
 
 +
<syntaxhighlight lang=pascal>
 +
  // =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
 +
</syntaxhighlight>
 +
 
 +
====Verwendung eingebauter Routinen====
  
<delphi>
+
<syntaxhighlight lang=pascal>
 
   // Schreibt die Formel E1 = ABS(A1)
 
   // Schreibt die Formel E1 = ABS(A1)
 
   SetLength(MyRPNFormula, 2);
 
   SetLength(MyRPNFormula, 2);
Line 37: Line 74:
 
   MyRPNFormula[2].ElementKind := fekROUND;
 
   MyRPNFormula[2].ElementKind := fekROUND;
 
   MyWorksheet.WriteRPNFormula(0, 5, MyRPNFormula);
 
   MyWorksheet.WriteRPNFormula(0, 5, MyRPNFormula);
</delphi>
+
</syntaxhighlight>
  
 
=== Eingebaute Routinen ===
 
=== Eingebaute Routinen ===
Line 43: Line 80:
 
'''ABS''' - Gibt den absoluten Wert einer Zahl zurück. Benötigt wird 1 Argument. Beispiel: ABS(-1) = 1
 
'''ABS''' - Gibt den absoluten Wert einer Zahl zurück. Benötigt wird 1 Argument. Beispiel: ABS(-1) = 1
  
'''ROUND''' - Rounds a number to a given number of decimal places. Takes 2 arguments, first the number to be rounded and then the number of decimal places to be rounded to. This second argument is zero by default and may be negative.
+
'''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 ===
 
=== Packages ===
  
FPSpreadsheet comes with the following packages to facilitate it's usage with:
+
FPSpreadsheet ist zum vereinfachten Gebrauch in folgende zwei Packages aufgeteilt:
  
==== laz_fpspreadsheet.lpk ====
+
====laz_fpspreadsheet.lpk====
  
Adds all necessary files to use fpspreadsheet in your Lazarus projects. After adding this package as a requirement to your project you can add "fpspreadsheet" to the uses clause of the units which use it.
+
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====
  
Adds a set of visual components which expands the capabilities of FPSpreadsheet to also include editing and displaying data on screen inside LCL applications.
+
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:
 
Die folgenden LCL Komponenten werden mit diesem Package installiert:
Line 64: Line 101:
 
== Beispiele ==
 
== Beispiele ==
  
To create a project which uses the fpspreadsheet library, add the fpspreadsheet_pkg package to it's Lazarus project, or add the base directory of fpspreadsheet to you compiler options if using another IDE.
+
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 ===
 
=== Excel 5 Beispiel ===
  
<delphi>
+
<syntaxhighlight lang=pascal>
 
{
 
{
 
excel5demo.dpr
 
excel5demo.dpr
  
Demonstrates how to write an Excel 5.x file using the fpspreadsheet library
+
Demonstriert, wie man eine Excel 5.x Datei schreibt unter Verwendung der fpspreadsheet-Bibliothek.
  
You can change the output format by changing the OUTPUT_FORMAT constant
+
Sie können das Ausgabe-Format festlegen indem Sie die Konstante OUTPUT_FORMAT ändern.
  
AUTHORS: Felipe Monteiro de Carvalho
+
AUTOR: Felipe Monteiro de Carvalho
 
}
 
}
 
program excel5demo;
 
program excel5demo;
Line 106: Line 143:
 
   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 164:
 
   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;
 
end.
 
end.
</delphi>
+
</syntaxhighlight>
 +
 
 +
=== Öffnen eines bestehenden Kalkulationsblattes ===
 +
 
 +
Um ein Kalkulationsblatt unter Angabe eines besonderen Formats zu öffnen, verwenden Sie ReadFromFile mit zwei Parametern:
 +
 
 +
<syntaxhighlight lang=pascal>
 +
MyWorkbook.ReadFromFile(AFileName, sfExcel5);
 +
</syntaxhighlight>
 +
 
 +
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.
 +
 
 +
<syntaxhighlight lang=pascal>
 +
MyWorkbook.ReadFromFile(AFileName);
 +
</syntaxhighlight>
 +
 
 +
=== Schreiben eines Kalkulationsblattes in eine Datei abhängig von der Erweiterung ===
 +
 
 +
Ä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.
 +
 
 +
Wie oben, modifiziert dieser Code die Unit fpspreadsheet.pas.
  
 +
<syntaxhighlight lang=pascal>
 +
procedure TsWorkbook.WriteToFile(const AFileName: string; const AOverwriteExisting: Boolean = False); overload;
 +
var SheetType: TsSpreadsheetFormat;
 +
begin
 +
    if getFormatFromFileName(AFileName, SheetType) then
 +
      WriteToFile(AFileName, SheetType, AOverwriteExisting)
 +
    else raise Exception.Create(Format(
 +
      '[TsWorkbook.WriteToFile] Attempted to save a spreadsheet by extension, but the extension %s is invalid.', [ExtractFileExt(AFileName)]));
 +
end;
 +
</syntaxhighlight>
  
 
=== Iteration durch alle Arbeitsblätter ===
 
=== Iteration durch alle Arbeitsblätter ===
  
<delphi>
+
<syntaxhighlight lang=pascal>
 
var
 
var
 
   MyWorkbook: TsWorkbook;
 
   MyWorkbook: TsWorkbook;
Line 147: Line 214:
 
   begin
 
   begin
 
     MyWorksheet := MyWorkbook.GetWorksheetByIndex(i);
 
     MyWorksheet := MyWorkbook.GetWorksheetByIndex(i);
     // Tue etwas mit MyWorksheet
+
     // Mach etwas mit MyWorksheet
 
   end;
 
   end;
</delphi>
+
</syntaxhighlight>
  
=== Daten aus einer Datenbank in eine Tabellenkalkulation übernehmen ===
+
===Daten aus einer Datenbank in eine Kalkulationstabelle konvertieren===
  
Beachten sie, daß es sich hier um nicht getesteten Meta-Code handelt.
+
Beachten Sie, dass es sich hier um nicht getesteten Meta-Code handelt.
  
<delphi>
+
<syntaxhighlight lang=pascal>
 
program db5xls;
 
program db5xls;
 
   
 
   
Line 183: Line 250:
 
   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 191: Line 258:
 
     MyWorksheet.WriteUTF8Text(0, i, MyDatabase.Field[i].FieldName);
 
     MyWorksheet.WriteUTF8Text(0, i, MyDatabase.Field[i].FieldName);
  
   // Write all cells to the worksheet
+
   // alle Felder in das Arbeitsblatt schreiben
 
   MyDatabase.First;
 
   MyDatabase.First;
 
   j := 0;
 
   j := 0;
Line 211: Line 278:
 
   MyWorkbook.Free;
 
   MyWorkbook.Free;
 
end.
 
end.
</delphi>
+
</syntaxhighlight>
  
=== Konvertierung zwischen zwei Tabellenkalkulationsformaten ===
+
===Konvertierung zwischen zwei Tabellenkalkulationsformaten===
  
Beachten sie, daß es sich hier um nicht getesteten Meta-Code handelt.
+
Beachten Sie, dass es sich hier um nicht getesteten Meta-Code handelt.
  
<delphi>
+
<syntaxhighlight lang=pascal>
 
program ods2xls;
 
program ods2xls;
 
   
 
   
Line 237: Line 304:
 
   MyDir := ExtractFilePath(ParamStr(0));
 
   MyDir := ExtractFilePath(ParamStr(0));
 
   
 
   
   // Convert the spreadsheet
+
   // Konvertiert die Kalkulationstabelle
 
   MyWorkbook := TsWorkbook.Create;
 
   MyWorkbook := TsWorkbook.Create;
 
   try
 
   try
Line 246: Line 313:
 
   end;
 
   end;
 
end.
 
end.
</delphi>
+
</syntaxhighlight>
  
 
=== Verwendung von Formatierungsoptionen ===
 
=== Verwendung von Formatierungsoptionen ===
Line 252: Line 319:
 
Die Formatierung wird unabhängig vom Text gesetzt wie im folgenden Beispiel:
 
Die Formatierung wird unabhängig vom Text gesetzt wie im folgenden Beispiel:
  
<delphi>
+
<syntaxhighlight lang=pascal>
 
   // Erzeugt einen fett geschriebenen Text
 
   // Erzeugt einen fett geschriebenen Text
 
   MyWorksheet.WriteUTF8Text(0, 0, 'First');
 
   MyWorksheet.WriteUTF8Text(0, 0, 'First');
 
   MyWorksheet.WriteUsedFormatting(0, 0, [uffBold]);
 
   MyWorksheet.WriteUsedFormatting(0, 0, [uffBold]);
</delphi>
+
</syntaxhighlight>
 +
 
 +
====Einstellen der Textorientierung====
 +
 
 +
Es gibt drei mögliche Textrichtungen: trHorizontal, rt90DegreeClockwiseRotation and rt90DegreeCounterClockwiseRotation
 +
 
 +
Sie sind relativ zur Standardausrichtung des Textes.
 +
 
 +
<syntaxhighlight lang=pascal>
 +
  // Schreibt in Fettschrift
 +
  MyWorksheet.WriteUTF8Text(0, 0, 'First');
 +
  MyCell := MyWorksheet.GetCell(0, 0);
 +
  MyCell^.TextRotation := rt90DegreeClockwiseRotation;
 +
  MyCell^.UsedFormattingFields := [uffTextRotation];
 +
</syntaxhighlight>
 +
 
 +
====Einstellen eines Randes====
 +
 
 +
<syntaxhighlight lang=pascal>
 +
  // 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];
 +
</syntaxhighlight>
 +
 
 +
====Einstellen einer Hintergrundfarbe====
 +
 
 +
Sie können eine von 16 Farben aus einer Palette für den Hintergrund auswählen. Die möglichen Werte sind:
 +
 
 +
<syntaxhighlight lang=pascal>
 +
  {@@ 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
 +
  );
 +
</syntaxhighlight>
 +
 
 +
Und ein Beispiel:
 +
 
 +
<syntaxhighlight lang=pascal>
 +
  // Schreibt einen Text mit Hintergrundfarbe
 +
  MyWorksheet.WriteUTF8Text(0, 0, 'Test');
 +
  MyCell := MyWorksheet.GetCell(0, 0);
 +
  MyCell^.BackgroundColor := scSilver;
 +
  MyCell^.UsedFormattingFields := [uffBackgroundColor];
 +
</syntaxhighlight>
 +
 
 +
====Kombination mehrerer Formatierungen====
 +
 
 +
<syntaxhighlight lang=pascal>
 +
  // 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];
 +
</syntaxhighlight>
 +
 
 +
===Gitter- und Diagramm-Steuerelemente mit FPSpreadsheet===
 +
 
 +
Siehe [[TsWorksheetChartSource]]
  
 
== Download ==
 
== Download ==
Line 265: Line 410:
  
 
<pre>
 
<pre>
svn co https://lazarus-ccr.svn.sourceforge.net/svnroot/lazarus-ccr/components/fpspreadsheet fpspreadsheet
+
svn checkout svn://svn.code.sf.net/p/lazarus-ccr/svn/components/fpspreadsheet fpspreadsheet
 
</pre>
 
</pre>
 +
 +
=== Neueste Version ===
 +
 +
Die neueste Version finden Sie hier auf SourceForge:
 +
 +
https://sourceforge.net/projects/lazarus-ccr/files/FPSpreadsheet/
 +
 +
== Unterstützung und Fehlerberichte ==
 +
 +
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.
 +
 +
Fehlerberichte sollten an den Pascal Bug Tracker im Abschnitt "Lazarus-CCR" gesendet werden: http://bugs.freepascal.org/
  
 
== 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'''
 +
!COLSPAN="1" STYLE="background:#ffdead;"|'''Datum/Zeit'''
 +
|----
 +
|CSV||Nein||Ja||nicht implementiert||nicht implementiert||nicht implementiert||nicht implementiert||nicht implementiert||nicht implementiert||nicht implementiert
 
|----
 
|----
|Excel 2.x||Nein||Nein**||Working||Working||Working||Working||Nicht implementiert||Working
+
|Excel 2.x||Nein||Nein**||class="working"|Working||class="working"|Working||class="working"|Working||class="working"|Working||nicht implementiert||class="working"|Working||nicht implementiert
 
|----
 
|----
|Excel 3.0||Nein||Nein**||Nicht implementiert||Nicht implementiert||Nicht implementiert||Nicht implementiert||Nicht implementiert||Nicht implementiert
+
|Excel 3.0||Nein||Nein**||nicht implementiert||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 4.0||Nein||Nein**||nicht implementiert||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 5.0 (Excel 5.0 and 95)||Ja||Nein**||class="working"|Working*||class="working"|Working||class="working"|Working||class="working"|Working||nicht implementiert||class="working"|Working||nicht implementiert
 
|----
 
|----
|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 and 2003)||Ja||Ja||class="working"|Working*||class="working"|Working||class="working"|Working||class="working"|Working||nicht implementiert||class="working"|Working||class="partial"|Read only and dates only
 
|----
 
|----
|Microsoft OOXML||Ja||Ja||Nicht implementiert||Nicht implementiert||Nicht implementiert||Nicht implementiert||Nicht implementiert||Nicht implementiert
+
|Microsoft OOXML||Ja||Ja||nicht implementiert||class="working"|Working||nicht implementiert||nicht implementiert||nicht implementiert||nicht implementiert||nicht implementiert
 
|----
 
|----
|OpenDocument||Ja||Ja||Working||Working||Working||Working||Nicht implementiert||Nicht implementiert
+
|OpenDocument||Ja||Ja||class="working"|Working||class="working"|Working||class="working"|Working||class="working"|Working||nicht implementiert||nicht implementiert||nicht implementiert
 
|}
 
|}
  
(*) 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 469:
 
!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;"|'''Rahmen'''
 +
!COLSPAN="1" STYLE="background:#ffdead;"|'''Hintergrundfarbe'''
 +
|----
 +
|CSV||nicht verfügbar||nicht verfügbar||nicht verfügbar||nicht verfügbar
 
|----
 
|----
|Excel 2.x||Nicht implementiert||Nicht implementiert
+
|Excel 2.x||nicht implementiert||nicht implementiert||nicht implementiert||nicht implementiert
 
|----
 
|----
|Excel 3.0||Nicht implementiert||Nicht implementiert
+
|Excel 3.0||nicht implementiert||nicht implementiert||nicht implementiert||nicht implementiert
 
|----
 
|----
|Excel 4.0||Nicht implementiert||Nicht implementiert
+
|Excel 4.0||nicht implementiert||nicht implementiert||nicht implementiert||nicht implementiert
 
|----
 
|----
|Excel 5.0 (Excel 5.0 und 95)||-||-
+
|Excel 5.0 (Excel 5.0 and 95)||-||-||nicht implementiert||nicht implementiert
 
|----
 
|----
|Excel 8.0 (Excel 97, 2000, XP und 2003)||Working||Working
+
|Excel 8.0 (Excel 97, 2000, XP and 2003)||class="working"|Working||class="working"|Working||class="working"|Working||class="working"|Working
 
|----
 
|----
|Microsoft OOXML||Nicht implementiert||Nicht implementiert
+
|Microsoft OOXML||nicht implementiert||class="working"|Working||nicht implementiert||nicht implementiert
 
|----
 
|----
|OpenDocument||Working||Working
+
|OpenDocument||class="working"|Working||class="working"|Working||class="working"|Working||class="working"|Working
 
|}
 
|}
  
== Changelog ==
+
== Änderungen ==
  
Jan 2009
+
November 2011
 +
* Released version 1.0, which includes OO XML generation support with bold formating supported and also a lot of improvements from the last years
 +
 
 +
Januar 2009
  
 
*Implemented a cross-platform support for OLE file. Now Excel 5.0 files can be created in any operating system.
 
*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
 
*Adds read support for Excel 2.1
  
Feb 2008
+
Februar 2008
  
 
*Initial commit to lazarus-ccr with write support for Excel 2.1, Excel 5.0 (Windows only) and experimental OOXML and OpenDocument
 
*Initial commit to lazarus-ccr with write support for Excel 2.1, Excel 5.0 (Windows only) and experimental OOXML and OpenDocument
  
 
== 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 343: Line 509:
  
 
* [[Office Automation]]
 
* [[Office Automation]]
 +
* [[CsvDocument]]
  
 
== Externe Links ==
 
== Externe Links ==

Latest revision as of 04:42, 16 February 2020

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

DIESE SEITE IST VERALTET. BITTE VERWENDEN SIE DIE ENGLISCHE SEITE.

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

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;

Verwendung von Zellbereichen und des unären Operators SUM

  // =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

Verwendung eingebauter Routinen

  // 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);

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

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

Öffnen eines bestehenden Kalkulationsblattes

Um ein Kalkulationsblatt unter Angabe eines besonderen Formats zu öffnen, verwenden Sie ReadFromFile mit zwei Parametern:

MyWorkbook.ReadFromFile(AFileName, sfExcel5);

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.

MyWorkbook.ReadFromFile(AFileName);

Schreiben eines Kalkulationsblattes in eine Datei abhängig von der Erweiterung

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

Wie oben, modifiziert dieser Code die Unit fpspreadsheet.pas.

procedure TsWorkbook.WriteToFile(const AFileName: string; const AOverwriteExisting: Boolean = False); overload;
var SheetType: TsSpreadsheetFormat;
begin
    if getFormatFromFileName(AFileName, SheetType) then
       WriteToFile(AFileName, SheetType, AOverwriteExisting)
    else raise Exception.Create(Format(
       '[TsWorkbook.WriteToFile] Attempted to save a spreadsheet by extension, but the extension %s is invalid.', [ExtractFileExt(AFileName)]));
end;

Iteration durch alle Arbeitsblätter

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;

Daten aus einer Datenbank in eine Kalkulationstabelle konvertieren

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

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.

Konvertierung zwischen zwei Tabellenkalkulationsformaten

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

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.

Verwendung von Formatierungsoptionen

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

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

Einstellen der Textorientierung

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

Sie sind relativ zur Standardausrichtung des Textes.

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

Einstellen eines Randes

  // 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];

Einstellen einer Hintergrundfarbe

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

  {@@ 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
  );

Und ein Beispiel:

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

Kombination mehrerer Formatierungen

  // 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];

Gitter- und Diagramm-Steuerelemente mit FPSpreadsheet

Siehe TsWorksheetChartSource

Download

Subversion

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

svn checkout svn://svn.code.sf.net/p/lazarus-ccr/svn/components/fpspreadsheet fpspreadsheet

Neueste Version

Die neueste Version finden Sie hier auf SourceForge:

https://sourceforge.net/projects/lazarus-ccr/files/FPSpreadsheet/

Unterstützung und Fehlerberichte

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.

Fehlerberichte sollten an den Pascal Bug Tracker im Abschnitt "Lazarus-CCR" gesendet werden: http://bugs.freepascal.org/

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 Datum/Zeit
CSV Nein Ja nicht implementiert nicht implementiert nicht implementiert nicht implementiert nicht implementiert nicht implementiert nicht implementiert
Excel 2.x Nein Nein** Working Working Working Working nicht implementiert Working nicht implementiert
Excel 3.0 Nein Nein** nicht implementiert 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 nicht implementiert
Excel 5.0 (Excel 5.0 and 95) Ja Nein** Working* Working Working Working nicht implementiert Working nicht implementiert
Excel 8.0 (Excel 97, 2000, XP and 2003) Ja Ja Working* Working Working Working nicht implementiert Working Read only and dates only
Microsoft OOXML Ja Ja nicht implementiert Working nicht implementiert nicht implementiert nicht implementiert nicht implementiert nicht implementiert
OpenDocument Ja Ja Working Working Working Working nicht implementiert 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 Rahmen Hintergrundfarbe
CSV nicht verfügbar nicht verfügbar nicht verfügbar nicht verfügbar
Excel 2.x nicht implementiert nicht implementiert nicht implementiert nicht implementiert
Excel 3.0 nicht implementiert nicht implementiert nicht implementiert nicht implementiert
Excel 4.0 nicht implementiert nicht implementiert nicht implementiert nicht implementiert
Excel 5.0 (Excel 5.0 and 95) - - nicht implementiert nicht implementiert
Excel 8.0 (Excel 97, 2000, XP and 2003) Working Working Working Working
Microsoft OOXML nicht implementiert Working nicht implementiert nicht implementiert
OpenDocument Working Working Working Working

Änderungen

November 2011

  • Released version 1.0, which includes OO XML generation support with bold formating supported and also a lot of improvements from the last years

Januar 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

Februar 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