Содержание материала

Code:

{ 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;

 

Добавить комментарий

Не использовать не нормативную лексику.

Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.

ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!


Защитный код
Обновить