Difference between revisions of "FPSpreadsheet/ru"

From Free Pascal wiki
Jump to navigationJump to search
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.
+
FpSpreadsheet библиотека предоставляет удобный способ создания и чтения табличных документов в различных форматах. Библиотека написана на очень гибкой основе, и поэтому её можно легко расширять поддержкой любого количества форматов.
  
== API Documentation ==
+
== Документация по API ==
  
 
=== API Reference ===
 
=== API Reference ===
  
In CHM format here:
+
В формате CHM см. здесь:
  
 
http://lazarus-ccr.svn.sourceforge.net/viewvc/lazarus-ccr/components/fpspreadsheet/fpspreadsheet.chm
 
http://lazarus-ccr.svn.sourceforge.net/viewvc/lazarus-ccr/components/fpspreadsheet/fpspreadsheet.chm
  
=== Formulas ===
+
=== Формулы ===
  
Two kinds of formulas are supported by FPSpreadsheet: string formulas and RPN formulas. String formulas are written in strings just like in the office application, for example "ROUND(A1+B1)", while RPN formulas are written in Reverse Polish Notation (RPN), for example: A1, B1, Add, 0, ROUND
+
В FPSpreadsheet поддерживаются два вида формул: строковый и RPN. Строковый вид записываются также как и в офисных приложениях, например, "ROUND (A1 + B1)", а RPN формулы записываются в обратной польской записи (Reverse Polish Notation (RPN)), например: A1, B1, Add, 0, ROUND
  
=== RPN Formulas ===
+
=== RPN формулы ===
  
Example for using build-in routines
+
Пример использования встроенной процедуры
  
 
<delphi>
 
<delphi>
Line 39: Line 39:
 
</delphi>
 
</delphi>
  
=== Built-in routines ===
+
=== Встроенные процедуры ===
  
'''ABS''' - Returns the absolute value of a given number. Takes 1 argument. Example: ABS(-1) = 1
+
'''ABS''' - Возвращает абсолютное значение заданного числа. Принимает 1 аргумент. Пример: 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''' - Округляет число до заданного числа десятичных знаков. Принимает 2 аргумента, сначало округляемое число, а затем количество десятичных знаков. Второй аргумент по умолчанию равен нулю и может быть отрицательным.
  
== Examples ==
+
== Примеры ==
  
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.
+
Чтобы создать проект, который использует библиотеку fpspreadsheet, необходимо добавить пакет fpspreadsheet_pkg в ваш Lazarus проект или добавить корневой каталог fpspreadsheet в опциях вашего компилятора, если используется другая IDE.
  
=== Excel 5 example ===
+
=== Пример Excel 5 ===
  
 
<delphi>
 
<delphi>
Line 117: Line 117:
  
  
=== Iterating through all Worksheets ===
+
=== Перебор всех Листов (Worksheets) ===
  
 
<delphi>
 
<delphi>
Line 134: Line 134:
 
</delphi>
 
</delphi>
  
===Converting a database to a spreadsheet===
+
===Преобразование базы данных в электронную таблицу===
  
Note that this is only meta-code, not tested.
+
Обратите внимание, что это только мета-код, не тестировал.
  
 
<delphi>
 
<delphi>
Line 196: Line 196:
 
</delphi>
 
</delphi>
  
== Download ==
+
== Скачать ==
  
 
=== Subversion ===
 
=== Subversion ===
  
You can download FPSpreadsheet using the subversion software and the following command line:
+
Вы можете скачать FPSpreadsheet с помощью subversion программного обеспечения или следующей командой:
  
 
<pre>
 
<pre>
Line 206: Line 206:
 
</pre>
 
</pre>
  
== Current Progress ==
+
== Текущий состояние ==
  
Progress by supported format:
+
Текущее состояние поддерживаемых форматов:
  
 
{| BORDER="1" CELLSPACING="0"
 
{| BORDER="1" CELLSPACING="0"
!COLSPAN="1" STYLE="background:#ffdead;"|'''Format'''
+
!COLSPAN="1" STYLE="background:#ffdead;"|'''Формат'''
!COLSPAN="1" STYLE="background:#ffdead;"|'''Supports multiple sheets?'''
+
!COLSPAN="1" STYLE="background:#ffdead;"|'''Поддержка нескольких листов'''
!COLSPAN="1" STYLE="background:#ffdead;"|'''Supports Unicode?'''
+
!COLSPAN="1" STYLE="background:#ffdead;"|'''Поддержка Unicode'''
!COLSPAN="1" STYLE="background:#ffdead;"|'''Reader Progress'''
+
!COLSPAN="1" STYLE="background:#ffdead;"|'''Чтение'''
!COLSPAN="1" STYLE="background:#ffdead;"|'''Writer Progress'''
+
!COLSPAN="1" STYLE="background:#ffdead;"|'''Запись'''
!COLSPAN="1" STYLE="background:#ffdead;"|'''Text'''
+
!COLSPAN="1" STYLE="background:#ffdead;"|'''Текст'''
!COLSPAN="1" STYLE="background:#ffdead;"|'''Number'''
+
!COLSPAN="1" STYLE="background:#ffdead;"|'''Число'''
!COLSPAN="1" STYLE="background:#ffdead;"|'''String Formula'''
+
!COLSPAN="1" STYLE="background:#ffdead;"|'''Строковая формула'''
!COLSPAN="1" STYLE="background:#ffdead;"|'''RPN Formula'''
+
!COLSPAN="1" STYLE="background:#ffdead;"|'''RPN формула'''
 
|----
 
|----
|Excel 2.x||No||No**||Working||Working||Working||Working||Not implemented||Working
+
|Excel 2.x||Нет||Нет**||Работает||Работает||Работает||Работает||Не реализовано||Работает
 
|----
 
|----
|Excel 3.0||No||No**||Not implemented||Not implemented||Not implemented||Not implemented||Not implemented||Not implemented
+
|Excel 3.0||Нет||Нет**||Не реализовано||Не реализовано||Не реализовано||Не реализовано||Не реализовано||Не реализовано
 
|----
 
|----
|Excel 4.0||No||No**||Not implemented||Not implemented||Not implemented||Not implemented||Not implemented||Not implemented
+
|Excel 4.0||Нет||Нет**||Не реализовано||Не реализовано||Не реализовано||Не реализовано||Не реализовано||Не реализовано
 
|----
 
|----
|Excel 5.0 (Excel 5.0 and 95)||Yes||No**||Working*||Working||Working||Working||Not implemented||Working
+
|Excel 5.0 (Excel 5.0 and 95)||Да||Нет**||Работает*||Работает||Работает||Работает||Не реализовано||Работает
 
|----
 
|----
|Excel 8.0 (Excel 97, 2000, XP and 2003)||Yes||Yes||Working*||Working||Working||Working||Not implemented||Not implemented
+
|Excel 8.0 (Excel 97, 2000, XP and 2003)||Да||Да||Работает*||Работает||Работает||Работает||Не реализовано||Не реализовано
 
|----
 
|----
|Microsoft OOXML||Yes||Yes||Not implemented||Not implemented||Not implemented||Not implemented||Not implemented||Not implemented
+
|Microsoft OOXML||Да||Да||Не реализовано||Не реализовано||Не реализовано||Не реализовано||Не реализовано||Не реализовано
 
|----
 
|----
|OpenDocument||Yes||Yes||Working||Working||Working||Working||Not implemented||Not implemented
+
|OpenDocument||Да||Да||Работает||Работает||Работает||Работает||Не реализовано||Не реализовано
 
|}
 
|}
  
(*) 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.
+
(**) В форматах, не поддерживающих Unicode, данные сохраняются в виде ISO 8859-1. Обратите внимание, что при чтении/записи FPSpreadsheet предлагает использовать UTF-8, но эти данные будут преобразованы в ISO при чтении или записи на диск. Будьте осторожны - символы, которые не укладываются в ISO Latin 1, будут потеряны в этих операциях.
  
== Changelog ==
+
== Журнал изменений ==
  
Jan 2009
+
Январь 2009
  
*Implemented a cross-platform support for OLE file. Now Excel 5.0 files can be created in any operating system.
+
*Реализована это кросс-платформенная поддержка для OLE файлов. Теперь файлы Excel 5.0 могут быть созданы в любой операционной системе.
*Adds read support for Excel 2.1
+
*Добавлена поддержка чтения файлов Excel 2.1
  
Feb 2008
+
Февраль 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
  
== License ==
+
== Лицензия ==
 
LGPL with static linking exception. This is the same license as is used in the Lazarus Component Library.
 
LGPL with static linking exception. This is the same license as is used in the Lazarus Component Library.
  
== See also ==
+
== См. также ==
  
 
* [[Office Automation]]
 
* [[Office Automation]]
  
== External Links ==
+
== Внешние ссылки ==
  
 
* Microsoft OLE Document Format - http://sc.openoffice.org/compdocfileformat.pdf
 
* Microsoft OLE Document Format - http://sc.openoffice.org/compdocfileformat.pdf
 
* Excel file format description - http://sc.openoffice.org/excelfileformat.pdf
 
* Excel file format description - http://sc.openoffice.org/excelfileformat.pdf

Revision as of 22:20, 12 April 2010

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

FpSpreadsheet библиотека предоставляет удобный способ создания и чтения табличных документов в различных форматах. Библиотека написана на очень гибкой основе, и поэтому её можно легко расширять поддержкой любого количества форматов.

Документация по API

API Reference

В формате CHM см. здесь:

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

Формулы

В FPSpreadsheet поддерживаются два вида формул: строковый и RPN. Строковый вид записываются также как и в офисных приложениях, например, "ROUND (A1 + B1)", а RPN формулы записываются в обратной польской записи (Reverse Polish Notation (RPN)), например: A1, B1, Add, 0, ROUND

RPN формулы

Пример использования встроенной процедуры

<delphi>

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

</delphi>

Встроенные процедуры

ABS - Возвращает абсолютное значение заданного числа. Принимает 1 аргумент. Пример: ABS (-1) = 1

ROUND - Округляет число до заданного числа десятичных знаков. Принимает 2 аргумента, сначало округляемое число, а затем количество десятичных знаков. Второй аргумент по умолчанию равен нулю и может быть отрицательным.

Примеры

Чтобы создать проект, который использует библиотеку fpspreadsheet, необходимо добавить пакет fpspreadsheet_pkg в ваш Lazarus проект или добавить корневой каталог fpspreadsheet в опциях вашего компилятора, если используется другая IDE.

Пример Excel 5

<delphi> { excel5demo.dpr

Demonstrates how to write an Excel 5.x file using the fpspreadsheet library

You can change the output format by changing the OUTPUT_FORMAT constant

AUTHORS: 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. </delphi>


Перебор всех Листов (Worksheets)

<delphi> 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;

</delphi>

Преобразование базы данных в электронную таблицу

Обратите внимание, что это только мета-код, не тестировал.

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

Скачать

Subversion

Вы можете скачать FPSpreadsheet с помощью subversion программного обеспечения или следующей командой:

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

Текущий состояние

Текущее состояние поддерживаемых форматов:

Формат Поддержка нескольких листов Поддержка Unicode Чтение Запись Текст Число Строковая формула RPN формула
Excel 2.x Нет Нет** Работает Работает Работает Работает Не реализовано Работает
Excel 3.0 Нет Нет** Не реализовано Не реализовано Не реализовано Не реализовано Не реализовано Не реализовано
Excel 4.0 Нет Нет** Не реализовано Не реализовано Не реализовано Не реализовано Не реализовано Не реализовано
Excel 5.0 (Excel 5.0 and 95) Да Нет** Работает* Работает Работает Работает Не реализовано Работает
Excel 8.0 (Excel 97, 2000, XP and 2003) Да Да Работает* Работает Работает Работает Не реализовано Не реализовано
Microsoft OOXML Да Да Не реализовано Не реализовано Не реализовано Не реализовано Не реализовано Не реализовано
OpenDocument Да Да Работает Работает Работает Работает Не реализовано Не реализовано

(*) Некоторые ячейки могут быть возвращены пустыми из-за отсутствия реализации некоторых числовых и строковых форматов. (**) В форматах, не поддерживающих Unicode, данные сохраняются в виде ISO 8859-1. Обратите внимание, что при чтении/записи FPSpreadsheet предлагает использовать UTF-8, но эти данные будут преобразованы в ISO при чтении или записи на диск. Будьте осторожны - символы, которые не укладываются в ISO Latin 1, будут потеряны в этих операциях.

Журнал изменений

Январь 2009

  • Реализована это кросс-платформенная поддержка для OLE файлов. Теперь файлы Excel 5.0 могут быть созданы в любой операционной системе.
  • Добавлена поддержка чтения файлов Excel 2.1

Февраль 2008

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

Лицензия

LGPL with static linking exception. This is the same license as is used in the Lazarus Component Library.

См. также

Внешние ссылки