unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids, comobj;
type
TForm1 =
class(TForm)
Button1: TButton;
StringGrid1: TStringGrid;
procedure Button1Click(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
Function ExcelCopyToStringGrid(
Excel : Variant;
ExcelFirstRow : Integer;
ExcelFirstCol : Integer;
ExcelLastRow : Integer;
ExcelLastCol : Integer;
StringGrid : TStringGrid;
StringGridFirstRow : Integer;
StringGridFirstCol : Integer;
SizeStringGridToFit : Boolean;
{Make the StringGrid the same size as the input range}
ClearStringGridFirst : Boolean
{cells outside input range in StringGrid are cleared}
): Boolean;
Var
C,R : Integer;
Begin
Result := False;
If ExcelLastCol < ExcelFirstCol
Then Exit;
If ExcelLastRow < ExcelFirstRow
Then Exit;
If (ExcelFirstRow < 1)
Or (ExcelFirstRow > 255)
Then Exit;
If (ExcelFirstCol < 1)
Or (ExcelFirstCol > 30000)
Then Exit;
If (ExcelLastRow < 1)
Or (ExcelLastRow > 255)
Then Exit;
If (ExcelLastCol < 1)
Or (ExcelLastCol > 30000)
Then Exit;
If StringGrid =
nil Then Exit;
If SizeStringGridToFit
Then
Begin
StringGrid.ColCount := ExcelLastCol - ExcelFirstCol + StringGridFirstCol + 1;
StringGrid.RowCount := ExcelLastRow - ExcelFirstRow + StringGridFirstRow + 1;
End;
If ClearStringGridFirst
Then
Begin
C := StringGrid.ColCount;
R := StringGrid.RowCount;
StringGrid.ColCount := 1;
StringGrid.RowCount := 1;
StringGrid.Cells[0,0] := '
';
StringGrid.ColCount := C;
StringGrid.RowCount := R;
End;
Result := True;
For R := ExcelFirstRow
To ExcelLastRow
Do
Begin
For C := ExcelFirstCol
To ExcelLastCol
Do
Begin
Try
StringGrid.Cells[
C - ExcelFirstCol + StringGridFirstCol,
R - ExcelFirstRow + StringGridFirstRow] :=
Excel.Cells[R, C];
Except
Result := False;
End;
End;
End;
End;
procedure TForm1.Button1Click(Sender: TObject);
var
excel: Variant;
begin
excel := createoleobject('
excel.application');
excel.workbooks.open ('
c:\mappe1.xls');
ExcelCopyToStringGrid(excel, 1, 1, 14, 7, StringGrid1, 0, 0, true, true);
excel.application.quit;
end;
end.