Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   Excel a DBGrid (https://www.clubdelphi.com/foros/showthread.php?t=90475)

DanielMC 17-06-2016 15:07:13

Excel a DBGrid
 
Saludos a todos.
Hace un tiempo ( gracias a la ayuda de ustedes!) logre exportar el contenido de un DBGrid a un Excel, ahora necesito hacer lo contrario, exportar los datos de un Excel hacia un DBGrid. He visto algunos códigos que me permiten cargan el Excel y visualizarlo, pero lo anterior no lo he encontrado.
Una vez que fuera solucionado el problema:
Como pudiera especificar que sea una hoja determinada del Excel que quiero que me cargue?
Como pudiera estar seguro que la exportación del Excel hacia el DBGrid fue satisfactoria?

Neftali [Germán.Estévez] 17-06-2016 15:45:45

Lo más fácil en este caso es utilizar ADO.
Con la cadena de conexión adecuada (donde la Hoja es el equivalente a la tabla) puedes ver los datos de una hoja Excel como si fueran una tabla.

De esa forma basta puedes conectar directamente a un Excel y mostrar los datos en un DBGrid (sin necesidad de copiar ni importar datos).

Si buscas por EXCEL+ADO en los foros encontrarás muchos hilos al respecto y en el FTP hay varios ejemplos para que puedas ver cómo se hace y cómo es la cadena de conexión.

Prueba con este, o este otro, aquí otro más,...

AgustinOrtu 17-06-2016 20:09:18

El truco está en meter el excel dentro de un TDataSet, que es lo que necesita un dbgrid para poder trabajar.

Tal y como dice Neftali, con ADO tenés el problema resuelto, ya que hay cierta cadena de conexión que te permite usar el archivo excel con componentes TADOQuery, que es el dataset que necesitas

Si buscas por el foro, vas a encontrar ejemplos y las distintas cadenas de conexión, hay algunas que agregan u omiten las cabeceras, etc

Yo dispongo de una unidad que implementa este acceso a excel usando una clase Delphi: RTL.Excel

Es necesario que instales Spring4D o que modifiques un poquito de código

También por como fue diseñado, espera una interface IDataSetCloner que realiza una copia de un TDataSet. Esto lo hacíamos para dejar el excel original intacto y poder cerrar el archivo y que no quede en uso.

Podes implementar tu versión de IDataSetCloner o bien proveer una implementación que no hace ninguna copia y devuelve el TDataSet original. La interface esta en la unidad RTL.DB

DanielMC 17-06-2016 21:28:41

Gracias a ambos por responder!, a pesar de que ya tengo una idea de como pudiera hacerlo, los ejemplos a los que hacen referencia estan de Delphi, no tendran algo en C++ para ahorrarme un poco de tiempo...disculpen tanto pedir!

marilinspi 29-07-2022 14:45:50

formato del excel
 
Cita:

Empezado por Neftali [Germán.Estévez] (Mensaje 506292)
Lo más fácil en este caso es utilizar ADO.
Con la cadena de conexión adecuada (donde la Hoja es el equivalente a la tabla) puedes ver los datos de una hoja Excel como si fueran una tabla.

De esa forma basta puedes conectar directamente a un Excel y mostrar los datos en un DBGrid (sin necesidad de copiar ni importar datos).

Si buscas por EXCEL+ADO en los foros encontrarás muchos hilos al respecto y en el FTP hay varios ejemplos para que puedas ver cómo se hace y cómo es la cadena de conexión.

Prueba con este, o este otro, aquí otro más,...


hola me ha servido mucho tu respuesta, solo que no logro que cargue MI archivo de excel, si copio los datos de mi excel y los pego en el que viene en el ejemplo, funciona, pero el mio me dice "la tabla externa no tiene el formato esperado" , sera que hay que guardarlo de alguna manera especial para que lo tome, proveedor dejo el mismo, solo cambio el nombre del archivo...

Neftali [Germán.Estévez] 01-08-2022 08:45:21

Tal vez sea la versión en que estás grabando la hoja (XLS, XLSX). Revisa también el nombre de las pestañas.

Si quieres envía tu hoja Excel (con algún dato de ejemplo) y probamos a configurarla.
Puedes comprimirla en un ZIP y adjuntarla al mensaje.


La franja horaria es GMT +2. Ahora son las 15:40:04.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi