Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 26-09-2011
Pitilingorri Pitilingorri is offline
Miembro
 
Registrado: ene 2007
Posts: 18
Poder: 0
Pitilingorri Va por buen camino
Abrir un archivo de texto con excel

Quiero abrir un fichero de texto con cierto formato en Excel. En VBA seria algo asi:

Cita:
Workbooks.OpenText Filename:= "C:\tmp\Prueba.TXT" , Origin:=xlWindows, StartRow:=16, DataType:=xlFixedWidth, FieldInfo:= Array(Array(0, 1), Array(7, 1), Array(31, 1), Array(43, 1), Array(53, 1), Array(67, 1))
Donde el parametro StartRow es la linea a partir de la cual se empieza a exportar el archivo de texto, y el campo FieldInfo indica la distribución de las columnas.

El código equivalente en Delphi que estoy usando el delphi es el siguiente:

Código Delphi [-]
Excel := createOleObject('Excel.Application'); 
Excel.WorkBooks.Opentext(odImportar.FileName,emptyparam,'18',emptyparam,'Array(Array(0, 1), Array(7, 1), Array(31, 1), Array(43, 1), Array(53, 1), Array(67, 1))'); 
Excel.Visible := True;


y me sale un mensaje de error que dice "Fallo en el método Opentext de la clase Workbooks".

Si en vez de introducir el código anterior meto este:

Código Delphi [-]
Excel := createOleObject('Excel.Application'); 
Excel.WorkBooks.Opentext(odImportar.FileName,emptyparam,'18',emptyparam); 
Excel.Visible := True;


no me da un mensaje de error (Aunque no me coloca el texto en las columnas que yo quiero), por lo que supongo que el error debe estar en el campo FieldInfo. ¿Hay alguna manera de meterlo correctamente?


Gracias de antemano por vuestra ayuda.

Última edición por Pitilingorri fecha: 26-09-2011 a las 19:13:04.
Responder Con Cita
  #2  
Antiguo 27-09-2011
Pitilingorri Pitilingorri is offline
Miembro
 
Registrado: ene 2007
Posts: 18
Poder: 0
Pitilingorri Va por buen camino
Bueno, parece ser que finalmente encontre la solución. Seria esta:

Código Delphi [-]
Excel := createOleObject('Excel.Application');  
Excel.Workbooks.OpenText('c:\tmp\Prueba.txt'
        , Origin:=xlWindows
  , StartRow:=18
  , DataType:=xlFixedWidth
     , FieldInfo := ( VarArrayOf([VarArrayOf([0, 7])
    , VarArrayOf([7, 1])
    , VarArrayOf([31, 1])
    , VarArrayOf([53, 1])
    , VarArrayOf([67, 1])]) )); 
Excel.Visible := True;

Espero que le pueda servir a alguien cuando se encuentre con la misma duda
Responder Con Cita
  #3  
Antiguo 27-09-2011
Pitilingorri Pitilingorri is offline
Miembro
 
Registrado: ene 2007
Posts: 18
Poder: 0
Pitilingorri Va por buen camino
Mi gozo en un pozo. Ahora parece que ha surgido otro problemilla. Al abrir el archivo me sale el siguiente mensaje:

Cita:
"Prueba.txt" está siendo modificado por "otro usuario" ¿Desea abrirlo con acceso de sólo lectura?
Realmente el problema no es grave, ya que el archivo se carga en el Excel, pero que aparezca esta pantalla resulta algo incomodo ¿Alguna idea?

Gracias de antemano por vuestra ayuda
Responder Con Cita
  #4  
Antiguo 27-09-2011
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.461
Poder: 21
newtron Va camino a la fama
Hola.

A mi me ha pasado que haciendo pruebas se quedan sesiones abiertas con el fichero pillado, mira a ver si es ese el problema porque matando las sesiones o reiniciando el equipo debe de solucionarse.

Saludos
__________________
Be water my friend.
Responder Con Cita
  #5  
Antiguo 27-09-2011
Pitilingorri Pitilingorri is offline
Miembro
 
Registrado: ene 2007
Posts: 18
Poder: 0
Pitilingorri Va por buen camino
Cita:
Empezado por newtron Ver Mensaje
Hola.

A mi me ha pasado que haciendo pruebas se quedan sesiones abiertas con el fichero pillado, mira a ver si es ese el problema porque matando las sesiones o reiniciando el equipo debe de solucionarse.

Saludos
Lo miraré de nuevo, pero no creo que esa eso ya que si que reinicié el equipo y me sigue dando ese problema. En cualquier caso, gracias por tu sugerencia

A la espera de una solución más optima y/o elegante, lo que he hecho es hacer una copia del fichero de texto:

Código Delphi [-]
CopyFile(PChar('c:\tmp\Prueba.txt'),PChar('d:\temporal.txt'),FALSE) then

Y después meter como parametro la copia del fichero:

Código Delphi [-]
Excel.Workbooks.OpenText('d:\temporal.txt'
    , Origin := xlWindows
        , StartRow := 16
        , DataType := xlFixedWidth
        , FieldInfo := ( VarArrayOf([VarArrayOf([0, 7])
            , VarArrayOf([7, 1])
                , VarArrayOf([31, 1])
                , VarArrayOf([53, 1])
                , VarArrayOf([67, 1])]) ));

La verdad es que no me hace demasiada gracia usar tan a la ligera ficheros temporales, pero por el momento parece que esta solución funciona.
Responder Con Cita
Respuesta



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 archivo excel desde ruta Jeko Varios 4 28-03-2011 10:50:20
Abrir, leer y escribir un archivo de texto zvf OOP 26 01-07-2010 02:14:05
Abrir archivo de texto con el bloc de notas noob API de Windows 17 30-12-2008 18:29:48
Problemas para abrir archivo EXCEL marceloalegre Varios 1 18-09-2007 19:40:39
Como abrir y modificar un archivo de Excel en builder pollo_c C++ Builder 0 17-08-2007 16:07:27


La franja horaria es GMT +2. Ahora son las 01:56:55.


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
Copyright 1996-2007 Club Delphi