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 24-08-2015
gdlrinfo gdlrinfo is offline
Miembro
 
Registrado: may 2007
Posts: 131
Poder: 17
gdlrinfo Va por buen camino
Convertir *.xls a *.dbf Con UHojaCalc.pas

Hola amigos desde ya muchas gracias a quienes se toman el tiempo el leer mi post, en primer lugar he encontrado esta pequeña hoja que hace que podamos hacer casi todas las funciones de Excel pero en OppenOfice dejo el link para que puedan mirarla ---> https://searchcode.com/codesearch/view/1112758/ en si la mayoría de las funciones andan muy bien pero yo necesito abrir una hoja en XLS y pasarla a DBF lo intente hacer con el siguiente código:
Código Delphi [-]
 
  Opendialog.Execute() ;
  HCalc:= THojaCalc.create(OpenDialog.FileName, true);
  HCalc.FileName:= 'C:\PADRON.XLS';
  if HCalc.IsActiveSheetProtected then
    ShowMessage('2nd sheet of name "'+HCalc.ActiveSheetName+'" IS protected');
  HCalc.SaveDocAs('C:\Padron.dbf');
  HCalc.Free;

Pero al guardarlo me da un error de tipo float si alguien se le ocurre alguna idea estaría agradecido atte. Gonzalo.
Responder Con Cita
  #2  
Antiguo 24-08-2015
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.039
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por gdlrinfo Ver Mensaje
Pero al guardarlo me da un error de tipo float
Pues copia exactamente el mensaje de error.
Responder Con Cita
  #3  
Antiguo 25-08-2015
gdlrinfo gdlrinfo is offline
Miembro
 
Registrado: may 2007
Posts: 131
Poder: 17
gdlrinfo Va por buen camino
Buenasss

Cita:
Empezado por Casimiro Notevi Ver Mensaje
Pues copia exactamente el mensaje de error.
Discúlpame el error es '14.0' is not a valid floating point value si lo hago con el open office sin pasar por Delphi lo hace a la perfección! Muchas gracias !!!
Responder Con Cita
  #4  
Antiguo 25-08-2015
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.039
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Pueden ser varias causas, si hicieras un "copia->pega" sería más fácil ayudarte.
En principio, mira si usas el punto o la coma para los decimales.
También deberías mirar si has pasado el valor como texto en lugar de como número, tendrá una comilla simple delante: ej.: '14.0
Responder Con Cita
  #5  
Antiguo 25-08-2015
gdlrinfo gdlrinfo is offline
Miembro
 
Registrado: may 2007
Posts: 131
Poder: 17
gdlrinfo Va por buen camino
Hola

Casimiro Como estas mira puedo hacer copia y pega pero el tema es que un proceso existente muy extenso no lo invente yo es este mismo https://searchcode.com/codesearch/view/1112758/ puse el enlace para no copiarlo todo acá el error de Float nose a que se debe porque en verdad lo que esta haciendo es abrir un xls con el open office y guardarlo como DBF nada mas.- lo que haría en programa seria esto como dije antes es una función existente ....

Código Delphi [-]
FUNCTION THojaCalc.SaveDocAs (strName: string; bAsExcel97: boolean = false): boolean;

{ Function added by Massimiliano Gozzi on V0.92 }
{ AsEXcel97 taken form V0.93 by Rômulo Silva Ramos }
{ Saving as .xls on Excel 2000/2003 trick by Malte Tüllmann on V1.01 }

  VAR
    vOoParams: variant;
    exVersion: Extended;
    saveThousandSeparator, saveDecimalSeparator: char;


  BEGIN
    result := false;
    IF DocLoaded
    THEN
      BEGIN
        IF IsExcel THEN
          BEGIN
          {$IFDEF COMPILER_7_UP}
            exVersion := StrToFloat(m_vPrograma.Application.Version, m_AmericanFormat);

          {$ELSE COMPILER_7_UP}
            saveThousandSeparator := SysUtils.ThousandSeparator;
            saveDecimalSeparator := SysUtils.DecimalSeparator;
            SysUtils.ThousandSeparator := ',';
            SysUtils.DecimalSeparator := '.';
            exVersion := StrToFloat(m_vPrograma.Application.Version);
            SysUtils.ThousandSeparator := saveThousandSeparator;
            SysUtils.DecimalSeparator := saveDecimalSeparator;

          {$ENDIF COMPILER_7_UP}
            IF (exVersion < 12)
            THEN //
            //Before Excel 2007 this was the method to force SaveAs Excel97 .xls
            //by Malte Tüllmann on V1.01
              m_vDocument.Saveas(strName, - 4143, EmptyParam, EmptyParam, EmptyParam, EmptyParam)
            ELSE //
            // From Excel 2003 this is the way to force .xls file format (excel8)
            // for back compatibility with older excel version and OO.
            //
            // 51 = xlOpenXMLWorkbook (without macro's in 2007-2010, xlsx)
            // 52 = xlOpenXMLWorkbookMacroEnabled (with or without macro's in 2007-2010, xlsm)
            // 50 = xlExcel12 (Excel Binary Workbook in 2007-2010 with or without macro's, xlsb)
            // 56 = xlExcel8 (97-2003 format in Excel 2007-2010, xls)
            // More on this here: http://www.rondebruin.nl/saveas.htm
              m_vDocument.Saveas(strName, 56);
            m_strFileName := strName;
            result := true;
          END {IF};
        IF IsOpenOffice THEN
          BEGIN //
          //I may need 1 or 2 params...
            IF bAsExcel97
            THEN
              vOoParams := VarArrayCreate([0, 1], varVariant)
            ELSE
              vOoParams := VarArrayCreate([0, 0], varVariant); //
          //First one for prompting on overwrite (good idea!)
            vOoParams[0] := ooCreateValue('Overwrite', false); //
          //Optionally tell OpenOffie to use Excel97 .xls format
            IF bAsExcel97 THEN
              vOoParams[1] := ooCreateValue('FilterName', 'MS Excel 97'); //
          //Do the save!
            m_vDocument.StoreAsUrl(FileName2URL(strName), vOoParams);
            m_strFileName := strName;
            result := true;
          END {IF};
      END {IF};
  END {THojaCalc.SaveDocAs};
Responder Con Cita
  #6  
Antiguo 25-08-2015
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.039
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por gdlrinfo Ver Mensaje
Casimiro Como estas mira puedo hacer copia y pega pero el tema es que un proceso existente muy extenso no lo invente yo es este mismo https://searchcode.com/codesearch/view/1112758/ puse el enlace para no copiarlo todo acá el error de Float nose a que se debe porque en verdad lo que esta haciendo es abrir un xls con el open office y guardarlo como DBF nada mas.- lo que haría en programa seria esto como dije antes es una función existente ....
Pues lo que te he dicho antes, tienes un numérico que lleva un carácter no númerico, por ejemplo lo que he puesto antes: '14.0 (Sobra la comilla del principio)
No podemos hacer mucho si no tenemos los datos que pasas, revisa esos datos que estén correctos.
Responder Con Cita
  #7  
Antiguo 27-08-2015
gdlrinfo gdlrinfo is offline
Miembro
 
Registrado: may 2007
Posts: 131
Poder: 17
gdlrinfo Va por buen camino
Buenas nuevamente

Buenas como estas ? Mira ahí quite la única columna numérica que tenia y tampoco lo hace no solo tira ese error sino que al quitar la Columna numérica tira un error que dice insuficiente memoria para realizar la tarea solo son 200 registros, en todo caso por ahí ustedes conozcan otro método para hacerlo osea pasar el xls a dbf desde ya muchas gracias !!!
Responder Con Cita
  #8  
Antiguo 27-08-2015
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.039
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
El problema es que tendríamos que tener un ejemplo real del fichero y demás, para probar.
Responder Con Cita
  #9  
Antiguo 27-08-2015
gdlrinfo gdlrinfo is offline
Miembro
 
Registrado: may 2007
Posts: 131
Poder: 17
gdlrinfo Va por buen camino
---

Es un fichero XLS convencional por ejemplo:

Nombre Apellido Telefono dirección
Gonzalo Martínez 024877878 santa fe 2015
Marcos Alvarez 48484897 Laprida 6000

Asi sucesivamente no hay nada raro en el fichero ! si me dices como lo envio pero es un fichero común y corriente.-

Atte. Gonzalo
Responder Con Cita
  #10  
Antiguo 27-08-2015
gdlrinfo gdlrinfo is offline
Miembro
 
Registrado: may 2007
Posts: 131
Poder: 17
gdlrinfo Va por buen camino
Lightbulb Casimiro Notevi

Otra cosa que estaría bueno si conoces algún componente que se pueda trabajar con xls y dbf que sea free y funcione en Delphi Xe6 yo he visto varios pero son pagos :S
Responder Con Cita
  #11  
Antiguo 27-08-2015
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.039
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Si quieres, comprime en un zip el proyecto (sin el ejecutable, para que ocupe poco) y adjúntalo aquí.
Responder Con Cita
  #12  
Antiguo 27-08-2015
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.039
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Y pregunto, ¿por qué quieres pasarlo a dbf?, algo tan obsoleto.
Responder Con Cita
  #13  
Antiguo 27-08-2015
gdlrinfo gdlrinfo is offline
Miembro
 
Registrado: may 2007
Posts: 131
Poder: 17
gdlrinfo Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Y pregunto, ¿por qué quieres pasarlo a dbf?, algo tan obsoleto.
Veras en mi trabajo recibimos archivos que están en ese formato y están encaprichados en no separarse del mismo ya que muchas empresas utilizan los datos en dbf si por mi fuera no lo usaría mas jajaja pero no es tan fácil no depende de mi.
Mañana te lo comprimo y lo envió gracias por tu atención!
Responder Con Cita
  #14  
Antiguo 27-08-2015
gdlrinfo gdlrinfo is offline
Miembro
 
Registrado: may 2007
Posts: 131
Poder: 17
gdlrinfo Va por buen camino
Subo archivos

Hola Casimiro Notevi aquí --->https://www.dropbox.com/s/himspsxsxj...rueba.zip?dl=0 subí el pequeño programa que debería convertir cualquier Excel a Dbf saludos y gracias por tu atención.-
Responder Con Cita
  #15  
Antiguo 27-08-2015
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.039
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿Una hoja de cálculo cualquiera?
¿Qué programa y versión?
Cuando estés contestando, en la parte de abajo tienes opciones para adjuntar archivos.
Responder Con Cita
  #16  
Antiguo 27-08-2015
gdlrinfo gdlrinfo is offline
Miembro
 
Registrado: may 2007
Posts: 131
Poder: 17
gdlrinfo Va por buen camino
Smile

Cita:
Empezado por Casimiro Notevi Ver Mensaje
¿Una hoja de cálculo cualquiera?
¿Qué programa y versión?
Cuando estés contestando, en la parte de abajo tienes opciones para adjuntar archivos.
Como estas? no me di cuenta que lo podía subir por acá con respecto a los XLS vienen en Formato Excel 2007 y el open office que uso es el 4.1.1 usamos el open office porque es el único que permite guardar en DBF ya que en mi trabajo solo hay office 2010 en adelante lo cual no tienen la opción de guardar el DBF cualquier cosita aquí estoy! !!! y gracias nuevamente
Responder Con Cita
  #17  
Antiguo 27-08-2015
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.039
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
No puedo compilarlo, ¿qué versión de delphi es?
Responder Con Cita
  #18  
Antiguo 28-08-2015
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola gdlrinfo.

Tampoco puedo compilarlo:
Cita:
[Fatal Error] OppenOffice.pas(7): File not found: 'UHojaCalc.dcu'
[Fatal Error] OpenOffice.dpr(6): Could not compile used unit 'OppenOffice.pas'
Y, una vez eliminadas las referencias:
Cita:
[Error] OppenOffice.pas(29): Undeclared identifier: 'THojaCalc'
[Error] OppenOffice.pas(35): Missing operator or semicolon
[Error] OppenOffice.pas(35): Incompatible types: 'TComponent' and 'TFileName'
[Error] OppenOffice.pas(40): 'THEN' expected but identifier 'IsActiveSheetProtected' found
[Error] OppenOffice.pas(53): Statement expected but end of file found
Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #19  
Antiguo 28-08-2015
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.039
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Me da que pensar, si no exporta bien o simplemente no funciona, ni compila
Responder Con Cita
  #20  
Antiguo 28-08-2015
gdlrinfo gdlrinfo is offline
Miembro
 
Registrado: may 2007
Posts: 131
Poder: 17
gdlrinfo Va por buen camino
Unhappy Buenas

Chicos compila a la perfección yo uso el Delphi xe6 nose porque no los deja :S y tengo instalado el open Office 4.1.1
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
Convertir de .doc a .pdf santiago14 Varios 10 03-06-2014 01:48:24
Convertir un BIN a PDF Volkhavaar82 Varios 2 22-05-2013 17:50:56
Convertir a DBF JerS Tablas planas 7 25-01-2010 18:30:37
Convertir de DOC a PDF kes Varios 2 16-10-2003 08:22:33
Convertir bmp a .ico jealousy Gráficos 2 06-10-2003 18:58:26


La franja horaria es GMT +2. Ahora son las 18:13:03.


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