Ver Mensaje Individual
  #26  
Antiguo 02-02-2007
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.557
Reputación: 25
egostar Va camino a la fama
Retomando el tema

Hola compañeros

Estoy con el tema de abrir una hoja de excel con ADO, seguí las indicaciones que se mostraron en este tema y funciona perfectamente.

Resulta que este procedimiento se hace en tiempo de diseño y funciona muy bien, ahora el punto es que necesito hacerlo en tiempo de ejecución y abrir cualquier archivo excel y cualquier hoja dentro del archivo.

En este momento he logrado abrir un archivo excel cualquiera desde un OpenDialog, pero según las instrucciones proporcionadas en tiempo de diseño al momento que se indica al ADODataSet.CommandType = cmdTableDirect, automaticamente muestra en la propiedad CommandText las hojas que están dentro de ese archivo.

Mi pregunta es la siguiente:

Como puedo obtener en un ComboBox o un ListBox los nombres de las hojas que están dentro del archivo.

Aqui pego lo que ya he hecho, aún me faltan algunas validaciones que ya agregaré posteriormente.

Código Delphi [-]
 
unit ULeeSalientes;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons, DB, ADODB, Grids, DBGrids, ExtCtrls;
 
type
  TForm1 = class(TForm)
    ADOConnection1: TADOConnection;
    ADODataSet1: TADODataSet;
    DataSource1: TDataSource;
    DBGrid1: TDBGrid;
    OpenDialog1: TOpenDialog;
    Panel1: TPanel;
    Panel2: TPanel;
    BitBtn1: TBitBtn;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure ADOConnection1BeforeConnect(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
  Archivo: String;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.ADOConnection1BeforeConnect(Sender: TObject);
begin
   ADOConnection1.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;'+
                                      'Data Source='+Archivo+
                                      ';Extended Properties=Excel 8.0;'+
                                      'Persist Security Info=False';
end;
 
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
  If OpenDialog1.Execute then begin
     Archivo := OpenDialog1.FileName;
     ADODataSet1.CommandText  := 'Dic 06$'; //Aqui estoy asignando el nombre de la hoja
     ADOConnection1.Connected := True;
     AdoDataSet1.Open;
  end;
end;
 
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  AdoDataSet1.Close;
  ADOConnection1.Connected := False;
end;
 
end.

Gracias anticipadas.
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita