program demo_pagelayout;
{$mode objfpc}{$H+}
uses
math,
fpstypes, fpspreadsheet, xlsxooxml;
var
book: TsWorkbook;
sheet: TsWorksheet;
row, col: Cardinal;
x: Double;
const
XMIN = -10;
XMAX = 10;
N = 100;
begin
book := TsWorkbook.Create;
try
sheet := book.AddWorksheet('Sheet1');
sheet.WriteText(0, 0, 'Index');
sheet.WriteHorAlignment(0, 0, haRight);
sheet.WriteText(0, 1, 'x');
sheet.WriteHorAlignment(0, 1, haRight);
sheet.WriteText(0, 2, 'y=sin(x)');
sheet.WriteHorAlignment(0, 2, haRight);
sheet.WriteText(0, 3, 'y=cos(x)');
sheet.WriteHorAlignment(0, 3, haRight);
sheet.WriteText(0, 4, 'y=sin(x)^2');
sheet.WriteHorAlignment(0, 4, haRight);
sheet.WriteText(0, 5, 'y=cos(x)^2');
sheet.WriteHorAlignment(0, 5, haRight);
sheet.WriteText(0, 6, 'y=sin(x)^3');
sheet.WriteHorAlignment(0, 6, haRight);
sheet.WriteText(0, 7, 'y=cos(x)^3');
sheet.WriteHorAlignment(0, 7, haRight);
for row := 1 to N do begin
x := (row - 1) / N * (XMAX - XMIN) + XMIN;
sheet.writeNumber(row, 0, row);
sheet.WriteNumber(row, 1, x, nfFixed, 5);
sheet.WriteNumber(row, 2, sin(x), nfFixed, 5);
sheet.WriteNumber(row, 3, cos(x), nfFixed, 5);
sheet.WriteNumber(row, 4, sin(x)**2, nfFixed, 5);
sheet.WriteNumber(row, 5, cos(x)**2, nfFixed, 5);
sheet.WriteNumber(row, 6, sin(x)**3, nfFixed, 5);
sheet.WriteNumber(row, 7, cos(x)**3, nfFixed, 5);
end;
for col := 1 to 7 do
sheet.WriteBorders(0, col, [cbSouth]);
for row :=1 to N do
sheet.WriteBorders(row, 0, [cbEast]);
sheet.WriteBorders(0, 0, [cbEast, cbSouth]);
// Rows 0 will be repeated
sheet.PageLayout.SetRepeatedRows(0, 0);
// Col 0 will be repeated
sheet.PageLayout.SetRepeatedCols(0, 0);
book.WriteToFile('pagelayout.xlsx', true);
finally
book.Free;
end;
end.