function
Xls_To_StringGrid(AGrid: TStringgrid; AXLSFile:
string
; i:
byte
):
Boolean
;
const
xlCellTypeLastCell =
$0000000B
;
var
XLApp, Sheet: OLEVariant;
RangeMatrix: Variant;
x, y, k, r:
Integer
;
begin
Result :=
False
;
XLApp := CreateOleObject(
'Excel.Application'
);
try
XLApp
.
Visible :=
False
;
XLApp
.
Workbooks
.
Open(AXLSFile);
<font color="Red"> Sheet := XLApp
.
Workbooks[ExtractFileName(AXLSFile)].WorkSheets[i]; - выкидывает ошибку "Неверный индекс"</font>
Sheet
.
Cells
.
SpecialCells(xlCellTypeLastCell, EmptyParam).Activate;
x := XLApp
.
ActiveCell
.
Row;
y := XLApp
.
ActiveCell
.
Column;
AGrid
.
RowCount := x;
AGrid
.
ColCount := y;
RangeMatrix := XLApp
.
Range[
'A1'
, XLApp
.
Cells
.
Item[X, Y]].Value;
k :=
1
;
repeat
for
r :=
1
to
y
do
AGrid
.
Cells[(r -
1
), (k -
1
)] := RangeMatrix[K, R];
Inc(k,
1
);
AGrid
.
RowCount := k +
1
;
until
k > x;
RangeMatrix := Unassigned;
finally
if
not
VarIsEmpty(XLApp)
then
begin
XLApp
.
Quit;
XLAPP := Unassigned;
Sheet := Unassigned;
Result :=
True
;
end
;
end
;
end
;