Club Delphi  
    FTP   CCD     Enlaces   Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Desplegado
  #1  
Antiguo 02-05-2012
cmfab cmfab is offline
Miembro
 
Registrado: jun 2010
Posts: 309
cmfab Va por buen camino
Abrir archivo excel 2007 o 2010

Hola a todos !!!

uso el siguiente trozo de código para abrir y leer las celdas de un archivo de excel

Código Delphi [-]
  if not OpenDialog1.Execute then exit;
  FileName := opendialog1.FileName;
  Excel := CreateOleObject('Excel.Application');
  Excel.Workbooks.Open(FileName);
  Sheet := Excel.Workbooks[ExtractFileName(FileName)].WorkSheets[1];
  Sheet.Cells.SpecialCells(xlCellTypeLastCell, EmptyParam).Activate;

pero solo me funciona con archivos de office 2003 (*.xls). que instrucción debería usar si el usuario selecciona un arhivo *.xlsx de office 2007 o 2010.

Gracias de antemano
Responder Con Cita
  #2  
Antiguo 02-05-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 6.030
ecfisa Va camino a la fama
Hola cmfab.

No sé que versión de Delphi estas usando.... mirá en estos enlaces:
Saludos.
Responder Con Cita
  #3  
Antiguo 02-05-2012
cmfab cmfab is offline
Miembro
 
Registrado: jun 2010
Posts: 309
cmfab Va por buen camino
Gracias ecfisa voy a revisar los links
Responder Con Cita
  #4  
Antiguo 14-05-2012
Jetzuvely21 Jetzuvely21 is offline
Miembro
 
Registrado: may 2012
Posts: 21
Jetzuvely21 Va por buen camino
Hola cmfab, tengo el mismo problema para la lectura de los archivos para office 2007 y 2010. Estoy trabajando en delphi 5 y utilizo el mismo trozo de codigo que tu para abrir los archivos (objeto ole). ¿encontraste alguna solución?...Yo por el momento he buscado en el foro y he encontrado que se puede hacer con ADO,instalando componentes externos y con archivos csv (delimitado por comas).

De antemano muchas gracias, saludos!
Responder Con Cita
  #5  
Antiguo 18-05-2012
cmfab cmfab is offline
Miembro
 
Registrado: jun 2010
Posts: 309
cmfab Va por buen camino
Hola, Jetzuvely21

Lamento decirte que no me ha funcionado para office 2010, por lo que mi cliente optó por dejar los archivos en formato 2003. si hay alguna solucion sería bueno que alguien dejara el codigo detallado.

un saludo !!!!
Responder Con Cita
  #6  
Antiguo 18-05-2012
Jetzuvely21 Jetzuvely21 is offline
Miembro
 
Registrado: may 2012
Posts: 21
Jetzuvely21 Va por buen camino
Cita:
Empezado por cmfab Ver Mensaje
Hola, Jetzuvely21

Lamento decirte que no me ha funcionado para office 2010, por lo que mi cliente optó por dejar los archivos en formato 2003. si hay alguna solucion sería bueno que alguien dejara el codigo detallado.

un saludo !!!!
Gracias por contestarme cmfab, yo opté por los ADO y la importación ya la hice con excel y con .csv, aunque ahora lo que ando buscando el porqué me devuelve algunos valores en blanco cuando son de tipo caracter o cadena de texto.

Ojalá si haya una solución para OLE.... >_<'


Nuevamente gracias y saludos!
__________________
"El mejor alimento del alma, es la inspiración de uno mismo.."
Responder Con Cita
  #7  
Antiguo 10-08-2012
Avatar de elaguna
elaguna elaguna is offline
Miembro
 
Registrado: abr 2009
Ubicación: México
Posts: 41
elaguna Va por buen camino
Ya tiene algún tiempo el tema pero si alguien llega con la misma duda le podría servir.

Cita:
Empezado por ecfisa Ver Mensaje
Hola cmfab.

No sé que versión de Delphi estas usando.... mirá en estos enlaces:Saludos.
El primer enlace es el que me pareció más claro y funciona muy bien, sólo un pequeño detalle falta:

Código Delphi [-]
begin
    newWorkbook := XLSXReader.Workbooks.Add('C:\book1.xlsx', GetUserDefaultLCID);
    objXLS := Excel_TLB.TExcelWorkbook.Create(nil);
    objXLS.ConnectTo(newWorkbook);
    objSheet := Excel_TLB.TExcelWorksheet.Create(nil);
    ...

falta inicializar la variable XLSXReader, y obviamente liberarla al final, entonces queda:
Código Delphi [-]
 begin
    XLSReader := Excel_TLB.TExcelApplication.Create(nil);

     newWorkbook := XLSXReader.Workbooks.Add('C:\book1.xlsx', GetUserDefaultLCID);
     objXLS := Excel_TLB.TExcelWorkbook.Create(nil);
     objXLS.ConnectTo(newWorkbook);
     objSheet := Excel_TLB.TExcelWorksheet.Create(nil);
    ...
    ...
    FreeAndNil(objXLS);
      FreeAndNil(objSheet);
    FreeAndNil(XLSXReader);

y es todo, y con eso funciona perfectamente.

Espero les sirva a todos, si hay alguna otra observación, háganla saber.

Saludos

Eduardo Laguna
__________________
No lo intentes!. Hazlo o no lo hagas, pero no lo intentes !!! (Yoda)
Responder Con Cita
Respuesta


Herramientas
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Abrir un archivo excel en un stringgrid con Lazarus IDE jejo1984 Lazarus, FreePascal, Kylix, etc. 9 16-01-2012 14:46:49
Abrir un archivo de texto con excel Pitilingorri Varios 4 27-09-2011 12:24:04
Abrir archivo excel desde ruta Jeko Varios 4 28-03-2011 10:50:20
Exportar datos a Excel 2007-2010 HiraSysCom Conexión con bases de datos 2 31-01-2011 22:11:05


La franja horaria es GMT +2. Ahora son las 23:45:47.


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