Ver Mensaje Individual
  #3  
Antiguo 17-09-2014
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Reputación: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
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
    { Private declarations }
  public
    { Public declarations }
  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];

     // Obtiene el valor de la última celda de la hoja activa de Excel
     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);

     // Obtiene la cantidad de filas y columnas de una hoja de Excel por la última celda activa
     Rows := Excel.ActiveCell.Row;
     Cols := Excel.ActiveCell.Column;

     // Otra forma de obtener la cantidad de filas y columnas de una hoja de Excel
     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.

Última edición por nlsgarcia fecha: 17-09-2014 a las 10:29:10.
Responder Con Cita