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? |
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,... |
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 |
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!
|
formato del excel
Cita:
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... |
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:06:32. |
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