As Thaddy said, I would not attempt to port fpspreadsheet to Delphi. It uses too many routines buried deeply inside FPC which do not exist in Delphi, e.g. the AVLTree or the expression parser.
If the requirements are not too high you could simply wrap the existing HotXLS calls in a conditional define checking for Delphi or Lazarus and replace each call by the correspoding fpspreadsheet routine in the FPC case. They can't be too different. Or, if you do not want too many IFDEFs in your own application units, write a spreadsheet unit in which you introduce an intermediate layer between your application and those spreadsheet libs. For example (untested, just an idea...):
unit MySpreadsheetLib;
uses
{$IFDEF FPC}
fprspreadsheet, fpstypes, fpsutils
{$ELSE}
HotXLS
{$ENDIF};
type
{$IFDEF FPC}
TMyworkbook = class(TsWorkbook)
{$ELSE}
TMyworkbook = class(THotXLSWorkbook) // no ideas whether this is their name for a workbook...
{$ENDIF}
public
procedure LoadFromXLS(AFileName: String);
....
end;
...
procedure TMyWorkbook.LoadFromXLS(AFileName: String);
begin
{$IFDEF FPC}
ReadFromFile(AFileName, sfBiff8);
{$ELSE}
LoadXLSFile(AFileName); // or whatever it is called by HotXLS
{$ENDIF}
end;
Then, in your own application call these itermediate methods rather than the HotXLS methods. This should work in Delphi AND in Lazarus in the same way.