下面的代码来自于Torry's Delphi Page:
下面的例子是不利用OLE控制Excel把StringGrid导出导XLS文件中。
{2. Without OLE } procedure XlsWriteCellLabel(XlsStream: TStream; const ACol, ARow: Word; 
  const AValue: string); 
var 
  L: Word; 
const 
  {$J+} 
  CXlsLabel: array[0..5] of Word = ($204, 0, 0, 0, 0, 0); 
  {$J-} 
begin 
  L := Length(AValue); 
  CXlsLabel[1] := 8 + L; 
  CXlsLabel[2] := ARow; 
  CXlsLabel[3] := ACol; 
  CXlsLabel[5] := L; 
  XlsStream.WriteBuffer(CXlsLabel, SizeOf(CXlsLabel)); 
  XlsStream.WriteBuffer(Pointer(AValue)^, L); 
end; 
function SaveAsExcelFile(AGrid: TStringGrid; AFileName: string): Boolean; 
const 
  {$J+} CXlsBof: array[0..5] of Word = ($809, 8, 00, $10, 0, 0); {$J-} 
  CXlsEof: array[0..1] of Word = ($0A, 00); 
var 
  FStream: TFileStream; 
  I, J: Integer; 
begin 
  Result := False; 
  FStream := TFileStream.Create(PChar(AFileName), fmCreate or fmOpenWrite); 
  try 
    CXlsBof[4] := 0; 
    FStream.WriteBuffer(CXlsBof, SizeOf(CXlsBof)); 
    for i := 0 to AGrid.ColCount - 1 do 
      for j := 0 to AGrid.RowCount - 1 do 
        XlsWriteCellLabel(FStream, I, J, AGrid.cells[i, j]); 
    FStream.WriteBuffer(CXlsEof, SizeOf(CXlsEof)); 
    Result := True; 
  finally 
    FStream.Free; 
  end; 
end; // Example: procedure TForm1.Button2Click(Sender: TObject); 
begin 
  if SaveAsExcelFile(StringGrid1, 'c:\MyExcelFile.xls') then 
    ShowMessage('StringGrid saved!'); 
end;