program Project1;
{$mode objfpc}{$H+}
uses
SysUtils,
fpstypes, fpspreadsheet, fpsallformats;
procedure WriteBorder(ASheet: TsWorksheet; ALeft,ATop,ARight,ABottom: Integer;
ALeftStyle, ATopStyle, ARightStyle, ABottomStyle: TsCellBorderStyle);
var
r, c: Integer;
cell: PCell;
begin
for c := ALeft to ARight do begin
ASheet.WriteBorderStyle(ATop, c, cbNorth, ATopStyle);
ASheet.WriteBorders(ATop, c, [cbNorth]);
ASheet.WriteBorderStyle(ABottom, c, cbSouth, ABottomStyle);
ASheet.WriteBorders(ABottom, c, [cbSouth]);
end;
for r := ATop to ABottom do begin
ASheet.WriteBorderStyle(r, ALeft, cbWest, ALeftStyle);
ASheet.WriteBorders(r, ALeft, [cbWest]);
ASheet.WriteBorderStyle(r, ARight, cbEast, ARightStyle);
ASheet.WriteBorders(r, ARight, [cbEast]);
end;
ASheet.WriteBorders(ATop, ALeft, [cbNorth, cbWest]);
ASheet.WriteBorders(ABottom, ALeft, [cbSouth, cbWest]);
ASheet.WriteBorders(ATop, ARight, [cbNorth, cbEast]);
ASheet.WriteBorders(ABottom, ARight, [cbSouth, cbEast]);
end;
var
book: TsWorkbook;
sheet: TsWorksheet;
r, c: Cardinal;
const
ThinBorder: TsCellBorderStyle = (Linestyle:lsThin; Color:scBlack);
ThickBorder: TsCellBorderStyle = (LineStyle:lsThick; Color:scBlack);
begin
book := TsWorkbook.Create;
try
sheet := book.AddWorksheet('Test');
for r := 0 to 99 do
for c := 0 to 99 do
sheet.WriteText(r, c, Format('R%dC%d', [r,c]));
WriteBorder(sheet, 5, 5, 50, 50, ThickBorder, ThinBorder, ThickBorder, ThinBorder);
book.WriteToFile('test.xlsx', sfOOXML, true);
finally
book.Free;
end;
end.