Ver Mensaje Individual
  #1  
Antiguo 25-03-2009
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Reputación: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Conectar Delphi con Excel

Hola,

Desde hace tiempo, cuando requiero conectar Delphi con Excel via ADO uso lo que describí en este hilo y cuyos pasos resumo aquí:
  1. Agregar los componentes ADO a la paleta de componentes

  2. Agregar un componente TAdoConnection y poner su propiedad LoginPrompt en false.

  3. Hacer doble clic en el componente para que se abra el editor de la propiedad ConnectionString, seleccionar "Use connection string" y oprimir el botón "Build" para que se abra la ventana de vínculo de datos.

  4. En la ficha "Proveedor" seleccionar Microsoft Jet 4.0 OLE DB.

  5. En la ficha "Conexión", en el cuadro "Origen de datos" escribir el nombre del archivo excel.

  6. En la ficha "Todas" seleccionar "Extended Properties" y luego "Modificar valor" y escribir "Excel 8.0" (sin las comillas).

  7. Oprimir 'Ok' las veces necesarias para cerrar todas las ventanas.

Con esto, ya se puede conectar un ADOTable y seleccionar la hoja que deseemos del libro de excel en su propiedad TableName.

Ahora bien, este método funciona para varias versiones de Excel, pero no, aparentemente, para Excel 2007. Básicamente hay que cambiar el proveedor (paso 4) por Provider=Microsoft.ACE.OLEDB.12.0.

Pero hay un pequeño problema. Al menos con Delphi 7, al seleccionar este proveedor, la propiedad "Extended Properties" no se guarda correctamente en el "Connection String", pero puede asignarse directamente en código:

Código Delphi [-]
ADOConnection.ConnectionString :=
  'Provider=Microsoft.ACE.OLEDB.12.0;' +
  'Data Source=C:\ruta\al\archivo.xlsx;' +
  'Extended Properties="Excel 12.0"';

y funciona bien.

// Saludos
Responder Con Cita