Difference between revisions of "FPSpreadsheet/de"

From Free Pascal wiki
Jump to navigationJump to search
m
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.
+
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 43: Line 43:
 
'''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 Zahlund zweitens die Anzahl der Nachkommastellen. Dieses zweite Argument ist standardmäßig auf 0 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 64:
 
== 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 ===
Line 72: Line 72:
 
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 153: Line 153:
 
=== Daten aus einer Datenbank in eine Tabellenkalkulation übernehmen ===
 
=== Daten aus einer Datenbank in eine Tabellenkalkulation übernehmen ===
  
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>
 
<delphi>
Line 215: Line 215:
 
=== 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>
 
<delphi>

Revision as of 20:09, 11 February 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

Ein Beispiel für die 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 Zahlund zweitens die Anzahl der Nachkommastellen. Dieses zweite Argument ist standardmäßig auf 0 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 Formal 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');
 // Save the spreadsheet to a file
 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);
   // Tue etwas mit MyWorksheet
 end;

</delphi>

Daten aus einer Datenbank in eine Tabellenkalkulation übernehmen

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;
 // Create the spreadsheet
 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);
 // Write all cells to the worksheet
 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));

 // Convert the spreadsheet
 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>

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

Progress by supported format:

Format Supports multiple sheets? Unterstützt Unicode? Reader Progress Writer Progress Text Number 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 Nicht implementiert
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

(*) Some cell could be returned blank due missing or non ready implemented number and text formats.
(**) 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.

Fortschritt der Formatierungsoptionen

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

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

Changelog

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