FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Abrir hoja/libro excel
Buenos días a todos. Necesitaba, con una aplicación en BCB 6, abrir un libro excel que contiene varias hojas diferentes. He estado viendo hilos por los foros y el que más información me ha dado es Excel a DBGrid. Me he bajado los ejemplos que cita Neftalí.
Tengo puesto este código para conectarme al libro: Código:
try { ADOConnection1->Close(); ADOConnection1->ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + OpenDialog->FileName + ";Extended Properties=Excel 8.0;Persist Security Info=False"; ADOConnection1->Open(); } catch(Exception &Exc) { return; } El libro está cerrado al ejecutar el open y no está protegido con ninguna contraseña. En uno de los ejemplos que cita Neftalí (ADO_Excel_2) veo que define dos constantes: Cita:
Por otra parte me surge una duda: como he comentado el libro tiene varias hojas, ¿cómo hago para ir moviéndome a lo largo de ellas? El elemento ADOTable ¿interpreta cada una de las hojas como una tabla distinta? |
#2
|
||||
|
||||
El mensaje de error dice: "... no puede abrir el archivo ''. ..."
Por el hecho de que después de la palabra "archivo" hay dos comilla simples, revisa estos dos comentarios que hago:
En Delphi OpenDialog se utiliza en varios pasos:
Última edición por duilioisola fecha: 19-07-2023 a las 13:23:53. |
#3
|
||||
|
||||
Gracias por la respuesta. He puesto sólo el código del TADOConnection; evidentemente estoy seguro que el nombre del fichero no está vacío, y para evitar problemas he simplificado el nombre del fichero a RESULTADOS.XLS, eliminando espacios en blanco y demás.
Por otra parte he cogido el código que comentaba antes del ejemplo y he puesto así la conexión: Código:
ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=" + OpenDialog->FileName + ";Extended Properties=Excel 8.0;Persist Security Info=False;HDR=Yes;"; |
#4
|
||||
|
||||
Cita:
Fíjate que ahí está usando Jet 4.0 y Excel 8.0. Si el libro está en un formato más nuevo puede ser que de error. Prueba a abrir con esa línea un Excel grabado en una versión antigua. Cita:
El libro es el equivalente a una Base de Datos y cada una de las hojas es el equivalente a una tabla.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#5
|
||||
|
||||
Si quieres adjunta la hoja de Excel, con unos datos de ejemplo y probamos...
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#6
|
||||
|
||||
Ahora mismo no tengo el PC a mano. Mañana por la mañana subo el libro.
|
#7
|
||||
|
||||
Yo lo abro con Office 2007, pero es posible.
|
#8
|
||||
|
||||
Os adjunto dos ficheros. RESULTADOS.RAR contiene el fichero tal como me lo ha enviado el cliente; en RESULTADOS1.RAR hay una copia guardada en formato Excel 97-2003, por si hubiera alguna diferencia. Mientras seguiré haciendo pruebas a ver que puede pasar. Gracias de antemano.
|
#9
|
||||
|
||||
Bueno, gracias a otro hilo (Llevar desde Excel a una BD paradox) he podido hacer que se conecte al libro Excel. El código queda así:
Código:
ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;User ID=admin;" "Data Source=" + fMenu->OpenDialog->FileName + ";Mode=ReadWrite;" "Extended Properties=Excel 8.0;Jet OLEDB:System database="";" "Jet OLEDB:Registry Path=;Jet OLEDB:Database Password=;" "Jet OLEDB:Engine Type=35;Jet OLEDB:Database LockingMode=0;" "Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;" "Jet OLEDB:New Database Password="";Jet OLEDB: Create System Database=False;" "Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;" "Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False"; |
#10
|
||||
|
||||
Cita:
Basta con que abras la conexión (ADOConnection) y utilices el método GetTableNames. Te devolverá la lista de tablas; En este caso la lista de Hojas del libro de Excel.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#11
|
||||
|
||||
Muchísimas gracias.
|
#12
|
||||
|
||||
Por otra parte he descubierto la razón del mensaje de error que ponía en la imagen de mi primer mensaje:
Antes de hacer el proceso de conexión del ADOConnection hay que crear el objeto; es decir que hay que añadir esta línea: Código:
Variant Excel = CreateOleObject("Excel.Application"); |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Abrir una hoja de Excel y poder cargarla en una app Android en Delphi XE6. | H.Sagas96 | Desarrollo en Delphi para Android | 1 | 19-06-2015 10:58:06 |
Abrir libro de Excel con delphi 7? | CaosDeath | Servers | 2 | 28-05-2010 12:26:19 |
Abrir doc excel en una hoja específica | Gaya | Servers | 2 | 14-10-2008 00:29:50 |
Problemas con Libro de Excel | lgarcia | Servers | 2 | 15-12-2006 23:06:15 |
Abrir Hoja de Excel en Forma???? | m@kio | Servers | 2 | 12-10-2005 21:26:33 |
|