Generates XML files for DeltaPro from Amazon invoices
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

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.