lbidi,
Cita:
Empezado por lbidi
...leer una planilla Excel que tiene varias hojas de las cuales solo necesito los datos de una sola hoja...
|
Revisa este código:
Código Delphi
[-]
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComObj;
type
TForm1 = class(TForm)
Button1: TButton;
OpenDialog1: TOpenDialog;
procedure Button1Click(Sender: TObject);
private
public
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
const
xlCellTypeLastCell = $0000000B;
var
FileExcel : String;
Excel, WrkS : OLEVariant;
Rows, Cols, i, j : Integer;
MatrixExcel : Array of Array of Variant;
MspAPP : String;
LastCell : Variant;
begin
OpenDialog1.Filter := 'Excel files|*.xls*';
if OpenDialog1.Execute then
FileExcel := OpenDialog1.FileName
else
Exit;
try
try
Excel := GetActiveOleObject('Excel.Application');
except
Excel := CreateOleObject('Excel.Application');
end;
Excel.DisplayAlerts := False;
Excel.Visible := False;
Excel.Workbooks.Open(FileExcel);
WrkS := Excel.Worksheets[1];
Wrks.Cells.SpecialCells(xlCellTypeLastCell, EmptyParam).Activate;
LastCell := Excel.ActiveCell.Value;
MspApp := Format('El valor de la última celda activa de Excel es : %s',[LastCell]);
MessageDlg(MspApp,mtInformation,[mbOK],0);
Rows := Excel.ActiveCell.Row;
Cols := Excel.ActiveCell.Column;
Rows := WrkS.UsedRange.Rows.Count;
Cols := WrkS.UsedRange.Columns.Count;
SetLength(MatrixExcel,Rows,Cols);
for i := 1 to Rows do
for j := 1 to Cols do
MatrixExcel[i-1,j-1] := WrkS.Cells[i, j].Value;
MspApp := Format('Creada Matrix de Elementos de Excel : Rows %d y Cols %d',[Rows, Cols]);
MessageDlg(MspApp,mtInformation,[mbOK],0);
finally
Excel.Quit;
Excel := Unassigned;
WrkS := Unassigned;
Finalize(MatrixExcel);
end;
end;
end.
El código anterior en Delphi 7 sobre Windows 7 Professional x32,
genera una matriz dinámica con los datos de una hoja de Excel 2010 por medio de Automatización en Excel.
Revisa esta información
Espero sea útil
Nelson.