FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
Importar datos de un excell delphi
Hola a todos,
estoy haciendo un programa que importa los datos de un fichero excell con el componente TexcellApplication, uso Delphi 7, y no consigo sacarle punta. Aquí os dejo el fallo que me está volviendo loca: El programa lee las casillas del fichero excell una a una, va leyendo todas las filas de una columna y luego pasa a la siguiente columna y hace lo mismo, así hasta el final del fichero, la casilla que lee el componente es un dato 'variant' (lo obtengo con la función value2 del componente), y por último los meto en un TstringList. código: var hoja: _Worksheet; x: variant; listaContenidoExcell: TStringList; begin (**Aquí primero asigno a hoja la pestaña uno del fichero y todas las cosas que hacen falta, voy leyendo todas las filas de cada columna con un bucle**) x := hoja.Range[sLetraColumna + IntToStr(i), sLetraColumna + IntToStr(i)].Value2; listaContenidoExcell.Add(VarToStr(x)); end; problema Las columnas que son fechas las trae en juliano, en lugar de la fecha (dd/mm/aaaa) que yo veo en el fichero excell me trae un número. Intentos de solucionar el problema que no han funcionado 1. Intentar descubrir cuando una columna es fecha y modificar el dato que trae definiéndolo como fecha. No funciona porque la columna fecha la trae como varDouble (igual que otras columnas que si que son números). He empezado por detectar las columnas que son double pero esto hace que al hacer listaContenidoExcell.Add(DateToStr(TVarData(x).VDate)) en algunas columnas que son datos numéricos de verdad me traiga los valores en formato fecha. 2.Formateo de la columna fecha en el archivo excell. No funciona porque al ponerla como texto me convierte automáticamente los valores de las fechas a juliano, así que tengo el mismo problema. Además formatear la columna como formato fecha no sirve para nada, el componente sigue detectando como varDouble el valor de la casilla. 3. Detectando las columnas que son double (como en el intento 1), con un try intentar comprobar que la conversión a fecha da un resultado válido y sino tratarlo como que no es fecha. No funciona porque hay valores en columnas de tipo varDouble que son números y que al pasarlos a fecha da una fecha correcta. A ver si alguien me puede dar un poquillo de luz al problema, o por lo menos alguna idea de como afrontarlo. Muchas gracias a todos!! |
#2
|
||||
|
||||
Recuerda poner los tags al código fuente, ejemplo:
Gracias |
#3
|
||||
|
||||
Checa este enlace
http://www.djpate.freeserve.co.uk/AutoExcl.htm Para saber sobre los objetos disponibles en excel para trabajar con un documento te recomiendo buscar también sobre macros, en el ftp del club encontrarás un manualillo viejón pero buenón
__________________
Herr Heins Faust |
#4
|
||||
|
||||
Veo que usas automatización, de los tiempos en que los documentos de Office eran de formato cerrado. Pero a partir de Office 2007 el formato de los libros y hojas de Excel es XML (OpenXML). El año pasado desarrollé unas clases para trabajar con ese tipo de documento, precisamente para importar información Excel desde Delphi.
En caso de que tus documentos sean de dicho formato (extensión .xlsx), más tarde pondré por aquí un ejemplo de uso. Saludos. Al González. |
#5
|
||||
|
||||
Anusky,
Cita:
Cita:
La imagen anterior es un ejemplo de Automatización de Excel 2010 con Delphi 7. Revisa este código: El código anterior lee por medio de la Automatización de Excel 2010 con Delphi 7 una hoja de cálculo sin alterar el contenido de la data obtenida y carga la misma en un control TStringGrid. Revisa este link: Cita:
Nelson. Última edición por nlsgarcia fecha: 10-01-2013 a las 22:51:14. |
#6
|
||||
|
||||
Al González,
Cita:
Cita:
Nelson. |
#7
|
||||
|
||||
Para evitar alguna posible confusión, creo que me faltó decir que el mecanismo tradicional de automatización sigue siendo vigente, aún con los nuevos formatos de Microsoft Office. Por tanto podría ser suficiente aplicar un código como el que ha puesto Nelson.
Viene dándose la idea de dejar de lado la automatización ahora que podemos acceder al contenido de los documentos de forma directa. Sin embargo, eso no quita que puedan resolverse muchos casos mediante automatización, sobre todo aquellos donde la velocidad de procesamiento no sea algo crítico. Saludos. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
porque es tan complidado importar datos de excel a delphi | Rofocale | Varios | 13 | 19-06-2012 18:15:23 |
Importar tablas Dbf a base de datos Access desde delphi | yusnerqui | Tablas planas | 6 | 25-08-2010 23:10:02 |
Componente en Delphi 2006 para importar datos de excel a postgres | saul_fg | PostgreSQL | 0 | 01-04-2009 18:49:56 |
importar datos de excel a una base de paradox con delphi | roraclau | Tablas planas | 4 | 11-01-2007 01:50:29 |
Importar datos | lafirma | Firebird e Interbase | 1 | 19-05-2003 10:26:26 |
|