Difference between revisions of "FPSpreadsheet/fr"

From Lazarus wiki
Jump to navigationJump to search
m (Text replace - "delphi>" to "syntaxhighlight>")
Line 19: Line 19:
 
Exemple d'utilisation de routines incluses
 
Exemple d'utilisation de routines incluses
  
<delphi>
+
<syntaxhighlight>
 
   // Write the formula E1 = ABS(A1)
 
   // Write the formula E1 = ABS(A1)
 
   SetLength(MyRPNFormula, 2);
 
   SetLength(MyRPNFormula, 2);
Line 37: Line 37:
 
   MyRPNFormula[2].ElementKind := fekROUND;
 
   MyRPNFormula[2].ElementKind := fekROUND;
 
   MyWorksheet.WriteRPNFormula(0, 5, MyRPNFormula);
 
   MyWorksheet.WriteRPNFormula(0, 5, MyRPNFormula);
</delphi>
+
</syntaxhighlight>
  
 
=== routines incluses ===
 
=== routines incluses ===
Line 68: Line 68:
 
=== Exemple Excel 5  ===
 
=== Exemple Excel 5  ===
  
<delphi>
+
<syntaxhighlight>
 
{
 
{
 
excel5demo.dpr
 
excel5demo.dpr
Line 131: Line 131:
 
   MyWorkbook.Free;
 
   MyWorkbook.Free;
 
end.
 
end.
</delphi>
+
</syntaxhighlight>
  
  
 
===  Itération au travers de toutes les feuilles de travail  ===
 
===  Itération au travers de toutes les feuilles de travail  ===
  
<delphi>
+
<syntaxhighlight>
 
var
 
var
 
   MyWorkbook: TsWorkbook;
 
   MyWorkbook: TsWorkbook;
Line 149: Line 149:
 
     // Do something with MyWorksheet
 
     // Do something with MyWorksheet
 
   end;
 
   end;
</delphi>
+
</syntaxhighlight>
  
 
=== Conversion d'une base de données vers une feuille de calcul===
 
=== Conversion d'une base de données vers une feuille de calcul===
Line 155: Line 155:
 
Notez que ce n'est que du méta-code, non testé.
 
Notez que ce n'est que du méta-code, non testé.
  
<delphi>
+
<syntaxhighlight>
 
program db5xls;
 
program db5xls;
 
   
 
   
Line 211: Line 211:
 
   MyWorkbook.Free;
 
   MyWorkbook.Free;
 
end.
 
end.
</delphi>
+
</syntaxhighlight>
  
 
===Convertion entre deux formats de feuille de calcul===
 
===Convertion entre deux formats de feuille de calcul===
Line 217: Line 217:
 
Notez que ce n'est que du méta-code, non testé.
 
Notez que ce n'est que du méta-code, non testé.
  
<delphi>
+
<syntaxhighlight>
 
program ods2xls;
 
program ods2xls;
 
   
 
   
Line 246: Line 246:
 
   end;
 
   end;
 
end.
 
end.
</delphi>
+
</syntaxhighlight>
  
 
== Téléchargement ==
 
== Téléchargement ==

Revision as of 15:16, 24 March 2012

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

La bibliothèque fpSpreadsheet offre un moyen pratique pour générer et lire des documents avec feuille de calcul sous différents formats. La bibliothèque est écrite de manière très flexible, susceptible d'être étendu pour supporter de nombreux formats facilement.

Documentation de l'API

Référence de l'API

Au format CHM ici:

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

Formules

Deux types de formules sont pris en charge par FPSpreadsheet: Les formules type chaînes de caractères et les formules RPN. Les formules type chaînes de caractères sont écrites dans les chaînes comme dans l'application de bureau, par exemple "ROUND(A1+B1)",tandis que les formules RPN sont écrites en notation polonaise inversées (RPN), par exemple: A1, B1, Add, 0, ROUND

Formules RPN

Exemple d'utilisation de routines incluses

  // Write the formula 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);

  // Write the formula 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);

routines incluses

ABS - Retoune la valeur absolue d'un nombre donné. Prend 1 argument. Exemple: ABS(-1) = 1

ROUND - Arrondit un nombre à un nombre donné de décimales. Prend 2 arguments, d'abord le nombre à arrondir en ensuite le nombre de décimales avec lesquelles on réalise l'arrondi. Ce deuxième argument est zéro par défaut et il peut être négatif.

Les paquets

FPSpreadsheet est livré avec les paquets suivants pour faciliter son utilisation:

laz_fpspreadsheet.lpk

Ajoute tous les fichiers nécessaires à l'utilisation de fpspreadsheet dans vos projets Lazarus. After adding this package as a requirement to your project you can add "fpspreadsheet" to the uses clause of the units which use it.

laz_fpspreadsheet_visual.lpk

Ajoute un jeux de composants visuels qui étend les possibilités de FPSpreadsheet pour inclure également l'édition et l'affichage des données sur l'écran à l'intérieur des applications LCL.

Les composants LCL suivants sont installés avec ce paquet:

Exemples

Pour créer un projet qui utilise la bibliothèque fpspreadsheet, ajoutez le paquet fpspreadsheet_pkg à votre projet lazarus, ou ajoutez le répertoire de base de fpspreadsheet à vos options du compilateur si vous utilisez un autre IDE.

Exemple Excel 5

{
excel5demo.dpr

Démontre comment écrire un fichier type Excel 5.x en utilisant la bibliothèque fpspreadsheet 

Vous pouvez changer le format de sortie en modifiant la constante OUTPUT_FORMAT 

AUTEURS: 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
  // Initialization
  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);

  // Write the formula E1 = A1 + B1
  // or, 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);

  // Creates a new worksheet
  MyWorksheet := MyWorkbook.AddWorksheet('My Worksheet 2');

  // Write some string cells
  MyWorksheet.WriteUTF8Text(0, 0, 'First');
  MyWorksheet.WriteUTF8Text(0, 1, 'Second');
  MyWorksheet.WriteUTF8Text(0, 2, 'Third');
  MyWorksheet.WriteUTF8Text(0, 3, 'Fourth');

  // Save the spreadsheet to a file
  MyWorkbook.WriteToFile(MyDir + 'test' + STR_EXCEL_EXTENSION, OUTPUT_FORMAT);
  MyWorkbook.Free;
end.


Itération au travers de toutes les feuilles de travail

var
  MyWorkbook: TsWorkbook;
  MyWorksheet: TsWorksheet;
  i: Integer;
begin
  // Here load MyWorkbook from a file or build it
 
  for i := 0 to MyWorkbook.GetWorksheetCount() - 1 do
  begin
    MyWorksheet := MyWorkbook.GetWorksheetByIndex(i);
    // Do something with MyWorksheet
  end;

Conversion d'une base de données vers une feuille de calcul

Notez que ce n'est que du méta-code, non testé.

program db5xls;
 
{$mode delphi}{$H+}
 
uses
  Classes, SysUtils, 
  // add database units
  fpspreadsheet, fpsallformats, fpspreadsheet_pkg;
 
const OUTPUT_FORMAT = sfExcel5;
 
var
  MyWorkbook: TsWorkbook;
  MyWorksheet: TsWorksheet;
  MyDatabase: TSdfDataset;
  MyDir: string;
  i, j: Integer;
begin
  // Initialization
  MyDir := ExtractFilePath(ParamStr(0));
 
  // Open the database
  MyDatabase := TSdfDataset.Create;
  MyDatabase.Filename := 'test.dat';
  // Add table description here
  MyDatabase.Active := True;

  // Create the spreadsheet
  MyWorkbook := TsWorkbook.Create;
  MyWorksheet := MyWorkbook.AddWorksheet('My Worksheet');
 
  // Write the field names
  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;

  // Close the database
  MyDatabase.Active := False;
  MyDatabase.Free;

  // Save the spreadsheet to a file
  MyWorkbook.WriteToFile(MyDir + 'test' + STR_EXCEL_EXTENSION, OUTPUT_FORMAT);
  MyWorkbook.Free;
end.

Convertion entre deux formats de feuille de calcul

Notez que ce n'est que du méta-code, non testé.

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
  // Initialization
  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.

Téléchargement

Subversion

Vous pouvez télécharger FPSpreadsheet en utilisant le logiciel subversion et avec la ligne de commande suivante:

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

Etat d'avancement actuel

Avancement par format supporté:

Format Prend en charge de plusieurs feuilles de calcul? Prise en charge de l'Unicode? Avancement lecteur de feuilles de calcul Avancement générateur de feuilles de calcul Texte Nombre Formule chaîne de caractère Formule RPN
Excel 2.x No No** actif actif actif actif Non implémenté actif
Excel 3.0 No No** Non implémenté Non implémenté Non implémenté Non implémenté Non implémenté Non implémenté
Excel 4.0 No No** Non implémenté Non implémenté Non implémenté Non implémenté Non implémenté Non implémenté
Excel 5.0 (Excel 5.0 et 95) Oui No** actif* actif actif actif Non implémenté actif
Excel 8.0 (Excel 97, 2000, XP et 2003) Oui Oui actif* actif actif actif Non implémenté Non implémenté
Microsoft OOXML Oui Oui Non implémenté Non implémenté Non implémenté Non implémenté Non implémenté Non implémenté
OpenDocument Oui Oui actif actif actif actif Non implémenté Non implémenté

(*) 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 as ISO 8859-1. Note that FPSpreadsheet offers UTF-8 read and write routines, but the data will be converted to ISO when reading or writing to the disk. Be careful that characters which don't fit ISO Latin 1 will be lost in those operations.

Changelog

Jan 2009

  • Implémentation du support multi-plateforme pour les fichiers OLE. Maintenant les fichiers Excel 5.0 peuvent être créés dans n'importe quel système d'exploitation.
  • Ajoute le support de la lecture pour Excel 2.1

Feb 2008

  • Publication initiale pour lazarus-ccr avec le support de l'écriture pour Excel 2.1, pour Excel 5.0 (seulement Windows) et pour OOXML et OpenDocument à titre expérimental

Licence

LGPL with static linking exception. C'est la même licence que celle utilisée dans la librairie de composants de Lazarus LCL.

Voir aussi

Liens externes

(OLE = Object Linking and Embedding c'est à dire "chaînage et incorporation d'objets")