Edición de hojas de Excel con Delphi y ADO

Esta guía paso a paso describe cómo conectarse a Microsoft Excel, recuperar datos de hoja y habilitar la edición de los datos utilizando DBGrid. También encontrará una lista de los errores más comunes que pueden aparecer en el proceso, además de cómo tratarlos..

Lo que se cubre a continuación:

  • Métodos para transferir datos entre Excel y Delphi. Cómo conectarse a Excel con ADO (ActiveX Data Objects) y Delphi.
  • Crear un editor de hojas de cálculo Excel usando Delphi y ADO
  • Recuperando los datos de Excel. Cómo hacer referencia a una tabla (o rango) en un libro de Excel.
  • Una discusión sobre los tipos de campo (columna) de Excel
  • Cómo modificar hojas de Excel: editar, agregar y eliminar filas.
  • Transferencia de datos desde una aplicación de Delphi a Excel. Cómo crear una hoja de trabajo y llenarla con datos personalizados de una base de datos de MS Access.

Cómo conectarse a Microsoft Excel

Microsoft Excel es una poderosa calculadora de hoja de cálculo y herramienta de análisis de datos. Dado que las filas y columnas de una hoja de cálculo de Excel se relacionan estrechamente con las filas y columnas de una tabla de base de datos, muchos desarrolladores consideran apropiado transportar sus datos a un libro de Excel para fines de análisis; y recuperar datos a la aplicación luego.

El enfoque más utilizado para el intercambio de datos entre su aplicación y Excel es Automatización. La automatización proporciona una manera de leer datos de Excel utilizando el Modelo de objetos de Excel para sumergirse en la hoja de trabajo, extraer sus datos y mostrarlos dentro de un componente similar a una cuadrícula, a saber, DBGrid o StringGrid.

La automatización le brinda la mayor flexibilidad para ubicar los datos en el libro de trabajo, así como la capacidad de formatear la hoja de trabajo y realizar varias configuraciones en tiempo de ejecución.

Para transferir sus datos hacia y desde Excel sin automatización, puede usar otros métodos como:

  • Escriba datos en un archivo de texto delimitado por comas y deje que Excel analice el archivo en celdas
  • Transfiera datos utilizando DDE (Intercambio dinámico de datos)
  • Transfiera sus datos hacia y desde una hoja de trabajo usando ADO

Transferencia de datos con ADO

Dado que Excel es compatible con JET OLE DB, puede conectarse a él con Delphi usando ADO (dbGO o AdoExpress) y luego recuperar los datos de la hoja de trabajo en un conjunto de datos ADO emitiendo una consulta SQL (al igual que abriría un conjunto de datos en cualquier tabla de base de datos).

De esta manera, todos los métodos y características del objeto ADODataset están disponibles para procesar los datos de Excel. En otras palabras, el uso de los componentes ADO le permite crear una aplicación que puede usar un libro de Excel como base de datos. Otro hecho importante es que Excel es un servidor ActiveX fuera de proceso. ADO se ejecuta en proceso y ahorra la sobrecarga de llamadas costosas fuera de proceso.

Cuando se conecta a Excel con ADO, solo puede intercambiar datos sin procesar hacia y desde un libro de trabajo. Una conexión ADO no se puede utilizar para formatear hojas o implementar fórmulas en celdas. Sin embargo, si transfiere sus datos a una hoja de trabajo que está formateada previamente, el formato se mantiene. Después de insertar los datos desde su aplicación a Excel, puede llevar a cabo cualquier formateo condicional utilizando una macro (pregrabada) en la hoja de trabajo.

Puede conectarse a Excel mediante ADO con los dos proveedores OLE DB que forman parte de MDAC: el proveedor Microsoft Jet OLE DB o el proveedor Microsoft OLE DB para controladores ODBC. Nos centraremos en el proveedor Jet OLE DB, que se puede utilizar para acceder a los datos en los libros de Excel a través de controladores de método de acceso secuencial indexado (ISAM) instalables.

Propina: Vea el Curso de principiantes para la programación de bases de datos de ADO de Delphi si es nuevo en ADO.

The ConnectionString Magic

La propiedad ConnectionString le dice a ADO cómo conectarse al origen de datos. El valor usado para ConnectionString consiste en uno o más argumentos que ADO usa para establecer la conexión.

En Delphi, el componente TADOConnection encapsula el objeto de conexión ADO; puede ser compartido por múltiples componentes del conjunto de datos ADO (TADOTable, TADOQuery, etc.) a través de sus propiedades de conexión.