You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
245 lines
6.1 KiB
245 lines
6.1 KiB
7 years ago
|
unit main;
|
||
|
|
||
|
interface
|
||
|
|
||
|
uses
|
||
|
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
|
||
|
Dialogs, StdCtrls, ShellAPI, LibXL;
|
||
|
|
||
|
type
|
||
|
TForm1 = class(TForm)
|
||
|
GenerateButton: TButton;
|
||
|
ExtractButton: TButton;
|
||
|
EditButton: TButton;
|
||
|
FormatButton: TButton;
|
||
|
CustomButton: TButton;
|
||
|
InvoiceButton: TButton;
|
||
|
procedure GenerateButtonClick(Sender: TObject);
|
||
|
procedure ExtractButtonClick(Sender: TObject);
|
||
|
procedure EditButtonClick(Sender: TObject);
|
||
|
procedure FormatButtonClick(Sender: TObject);
|
||
|
procedure CustomButtonClick(Sender: TObject);
|
||
|
procedure InvoiceButtonClick(Sender: TObject);
|
||
|
private
|
||
|
{ Private declarations }
|
||
|
public
|
||
|
{ Public declarations }
|
||
|
end;
|
||
|
|
||
|
var
|
||
|
Form1: TForm1;
|
||
|
|
||
|
implementation
|
||
|
|
||
|
{$R *.dfm}
|
||
|
|
||
|
procedure TForm1.GenerateButtonClick(Sender: TObject);
|
||
|
var
|
||
|
Book: TBook;
|
||
|
Sheet: TSheet;
|
||
|
dateFormat: TFormat;
|
||
|
begin
|
||
|
Book := TBinBook.Create;
|
||
|
Sheet := Book.addSheet('Sheet1');
|
||
|
|
||
|
Sheet.writeStr(2, 1, 'Hello, World !');
|
||
|
Sheet.writeNum(3, 1, 1000);
|
||
|
|
||
|
dateFormat := Book.addFormat();
|
||
|
dateFormat.setNumFormat(NUMFORMAT_DATE);
|
||
|
Sheet.writeNum(4, 1, Book.datePack(2008, 4, 29), dateFormat);
|
||
|
Sheet.setCol(1, 1, 12);
|
||
|
|
||
|
Book.save('example.xls');
|
||
|
ShellExecute(0, 'open', 'example.xls', nil, nil, SW_SHOW);
|
||
|
Book.Free;
|
||
|
end;
|
||
|
|
||
|
procedure TForm1.ExtractButtonClick(Sender: TObject);
|
||
|
var
|
||
|
Book: TBook;
|
||
|
Sheet: TSheet;
|
||
|
d: double;
|
||
|
s: string;
|
||
|
begin
|
||
|
Book := TBinBook.Create;
|
||
|
Book.load('example.xls');
|
||
|
Sheet := Book.getSheet(0);
|
||
|
|
||
|
s := Sheet.readStr(2, 1);
|
||
|
d := Sheet.readNum(3, 1);
|
||
|
|
||
|
ShowMessage(s + #13#10 + FloatToStr(d));
|
||
|
|
||
|
Book.Free;
|
||
|
end;
|
||
|
|
||
|
procedure TForm1.EditButtonClick(Sender: TObject);
|
||
|
var
|
||
|
Book: TBook;
|
||
|
Sheet: TSheet;
|
||
|
d: double;
|
||
|
begin
|
||
|
Book := TBinBook.Create;
|
||
|
Book.load('example.xls');
|
||
|
Sheet := Book.getSheet(0);
|
||
|
|
||
|
d := Sheet.readNum(3, 1);
|
||
|
|
||
|
Sheet.writeNum(3, 1, d * 2);
|
||
|
|
||
|
Book.save('example.xls');
|
||
|
ShellExecute(0, 'open', 'example.xls', nil, nil, SW_SHOW);
|
||
|
Book.Free;
|
||
|
end;
|
||
|
|
||
|
procedure TForm1.FormatButtonClick(Sender: TObject);
|
||
|
var
|
||
|
Book: TBook;
|
||
|
Sheet: TSheet;
|
||
|
Font: TFont;
|
||
|
Format: TFormat;
|
||
|
begin
|
||
|
Book := TBinBook.Create;
|
||
|
|
||
|
Font := Book.addFont;
|
||
|
Font.size := 36;
|
||
|
|
||
|
Format := Book.addFormat();
|
||
|
Format.alignH := ALIGNH_CENTER;
|
||
|
Format.setBorder(BORDERSTYLE_MEDIUMDASHDOTDOT);
|
||
|
Format.setBorderColor(COLOR_RED);
|
||
|
Format.font := Font;
|
||
|
|
||
|
Sheet := Book.addSheet('Sheet1');
|
||
|
Sheet.writeStr(2, 1, 'Format', Format);
|
||
|
Sheet.setCol(1, 1, 25);
|
||
|
|
||
|
Book.save('format.xls');
|
||
|
ShellExecute(0, 'open', 'format.xls', nil, nil, SW_SHOW);
|
||
|
Book.Free;
|
||
|
end;
|
||
|
|
||
|
procedure TForm1.CustomButtonClick(Sender: TObject);
|
||
|
var
|
||
|
Book: TBook;
|
||
|
Sheet: TSheet;
|
||
|
f: array[0..5] of Integer;
|
||
|
format: array[0..5] of TFormat;
|
||
|
i: Integer;
|
||
|
begin
|
||
|
Book := TBinBook.Create;
|
||
|
|
||
|
f[0] := Book.addCustomNumFormat('0.0');
|
||
|
f[1] := Book.addCustomNumFormat('0.00');
|
||
|
f[2] := Book.addCustomNumFormat('0.000');
|
||
|
f[3] := Book.addCustomNumFormat('0.0000');
|
||
|
f[4] := Book.addCustomNumFormat('#,###.00 $');
|
||
|
f[5] := Book.addCustomNumFormat('#,###.00 $[Black][<1000];#,###.00 $[Red][>=1000]');
|
||
|
|
||
|
for i := 0 to 5 do
|
||
|
begin
|
||
|
format[i] := Book.addFormat();
|
||
|
format[i].setNumFormat(f[i]);
|
||
|
end;
|
||
|
|
||
|
Sheet := Book.addSheet('Custom formats');
|
||
|
|
||
|
Sheet.setCol(0, 0, 20);
|
||
|
|
||
|
Sheet.writeNum(2, 0, 25.718, format[0]);
|
||
|
Sheet.writeNum(3, 0, 25.718, format[1]);
|
||
|
Sheet.writeNum(4, 0, 25.718, format[2]);
|
||
|
Sheet.writeNum(5, 0, 25.718, format[3]);
|
||
|
|
||
|
Sheet.writeNum(7, 0, 1800.5, format[4]);
|
||
|
|
||
|
Sheet.writeNum(9, 0, 500, format[5]);
|
||
|
Sheet.writeNum(10, 0, 1600, format[5]);
|
||
|
|
||
|
Book.save('custom.xls');
|
||
|
ShellExecute(0, 'open', 'custom.xls', nil, nil, SW_SHOW);
|
||
|
Book.Free;
|
||
|
end;
|
||
|
|
||
|
procedure TForm1.InvoiceButtonClick(Sender: TObject);
|
||
|
var
|
||
|
Book: TBook;
|
||
|
boldFont, titleFont: TFont;
|
||
|
titleFormat, headerFormat, descriptionFormat, amountFormat, totalLabelFormat, totalFormat, signatureFormat: TFormat;
|
||
|
Sheet: TSheet;
|
||
|
begin
|
||
|
Book := TXmlBook.Create;
|
||
|
boldFont := Book.addFont();
|
||
|
boldFont.bold := true;
|
||
|
|
||
|
titleFont := Book.addFont();
|
||
|
titleFont.name := 'Arial Black';
|
||
|
titleFont.size := 16;
|
||
|
|
||
|
titleFormat := Book.addFormat();
|
||
|
titleFormat.font := titleFont;
|
||
|
|
||
|
headerFormat := Book.addFormat();
|
||
|
headerFormat.alignH := ALIGNH_CENTER;
|
||
|
headerFormat.setBorder(BORDERSTYLE_THIN);
|
||
|
headerFormat.font := boldFont;
|
||
|
headerFormat.fillPattern := FILLPATTERN_SOLID;
|
||
|
headerFormat.patternForegroundColor := COLOR_TAN;
|
||
|
|
||
|
descriptionFormat := Book.addFormat();
|
||
|
descriptionFormat.borderLeft := BORDERSTYLE_THIN;
|
||
|
|
||
|
amountFormat := Book.addFormat();
|
||
|
amountFormat.setNumFormat(NUMFORMAT_CURRENCY_NEGBRA);
|
||
|
amountFormat.borderLeft := BORDERSTYLE_THIN;
|
||
|
amountFormat.borderRight := BORDERSTYLE_THIN;
|
||
|
|
||
|
totalLabelFormat := Book.addFormat();
|
||
|
totalLabelFormat.borderTop := BORDERSTYLE_THIN;
|
||
|
totalLabelFormat.alignH := ALIGNH_RIGHT;
|
||
|
totalLabelFormat.font := boldFont;
|
||
|
|
||
|
totalFormat := Book.addFormat();
|
||
|
totalFormat.setNumFormat(NUMFORMAT_CURRENCY_NEGBRA);
|
||
|
totalFormat.setBorder(BORDERSTYLE_THIN);
|
||
|
totalFormat.font := boldFont;
|
||
|
totalFormat.fillPattern := FILLPATTERN_SOLID;
|
||
|
totalFormat.patternForegroundColor := COLOR_YELLOW;
|
||
|
|
||
|
signatureFormat := Book.addFormat();
|
||
|
signatureFormat.alignH := ALIGNH_CENTER;
|
||
|
signatureFormat.borderTop := BORDERSTYLE_THIN;
|
||
|
|
||
|
Sheet := Book.addSheet('Invoice');
|
||
|
|
||
|
Sheet.writeStr(2, 1, 'Invoice No.3568', titleFormat);
|
||
|
|
||
|
Sheet.writeStr(4, 1, 'Name: John Smith');
|
||
|
Sheet.writeStr(5, 1, 'Address: San Ramon, CA 94583 USA');
|
||
|
|
||
|
Sheet.writeStr(7, 1, 'Description', headerFormat);
|
||
|
Sheet.writeStr(7, 2, 'Amount', headerFormat);
|
||
|
|
||
|
Sheet.writeStr(8, 1, 'Ball - Point Pens', descriptionFormat);
|
||
|
Sheet.writeNum(8, 2, 85, amountFormat);
|
||
|
Sheet.writeStr(9, 1, 'T - Shirts', descriptionFormat);
|
||
|
Sheet.writeNum(9, 2, 150, amountFormat);
|
||
|
Sheet.writeStr(10, 1, 'Tea cups', descriptionFormat);
|
||
|
Sheet.writeNum(10, 2, 45, amountFormat);
|
||
|
|
||
|
Sheet.writeStr(11, 1, 'Total:', totalLabelFormat);
|
||
|
Sheet.writeFormula(11, 2, '=SUM(C9:C11)', totalFormat);
|
||
|
|
||
|
Sheet.writeStr(14, 2, 'Signature', signatureFormat);
|
||
|
|
||
|
Sheet.setCol(1, 1, 40);
|
||
|
Sheet.setCol(2, 2, 15);
|
||
|
|
||
|
Book.save('invoice.xlsx');
|
||
|
ShellExecute(0, 'open', 'invoice.xlsx', nil, nil, SW_SHOW);
|
||
|
Book.Free;
|
||
|
end;
|
||
|
|
||
|
end.
|