Difference between revisions of "FPSpreadsheet/ru"
m |
|||
Line 261: | Line 261: | ||
* 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 | ||
+ | --[[User:4yma|4yma]] 01:53, 13 April 2010 (CEST) |
Revision as of 01:53, 13 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.
См. также
Внешние ссылки
- Microsoft OLE Document Format - http://sc.openoffice.org/compdocfileformat.pdf
- Excel file format description - http://sc.openoffice.org/excelfileformat.pdf
--4yma 01:53, 13 April 2010 (CEST)