en

MSGuayaquil

Recursos esenciales para el desarrollador .NET

eXpert RoadShow

Apoyo para modificar programa

Último post 10-24-2007 12:13 PM escrito por cxmontes. 1 respuestas.
Página 1 de 1 (2 elementos)
Ordenar mensajes: Anterior Siguiente
  • 10-23-2007 12:56 PM

    • mrivera30
    • Contribuyente Top 200
    • Se unió el 08-30-2007
    • Envíos: 1
    • Puntos: 0

    Apoyo para modificar programa

     Estimado Todos:

    Buenas tardes es mi primera intervención en el foro, asi mismo como se van a percatar mis primeros pasos en el ambiente de programación con este herramienta.

    La problematica para la cual solicito su valioso apoyo es que estoy tratando de modificar el siguiente codigo el cual actualmente convierte archivos de tipo DOC a TXT y mi solicitud es si alguien de los expertos del foro me pueden apoyar a modificarlo para que convierta archivos XLS a CSV, el codigo es el siguiente:

    cRuta = GetFile('DOC', 'Archivo', "Abrir", 0, 'Seleccione el archivo de Word a Convertir')

    If Empty(cRuta)

    Return .F.

    EndIf

     

    oW = CreateObject("Word.Application")

    With oW

    .DisplayAlerts = .F.

    cNewTxt =
    ForceExt(cRuta, 'Txt')

    .Documents.Open(cRuta)

    .ActiveDocument.SaveAs(cNewTxt, 2, .F., '', .F., '', .F., .F., .F., .F., .F., .T., .F.)

    .Documents(1).Close

    .Quit

    EndWith

    Release oW

    Wait Window "Documento guardado en ... " + cNewTxt

     

    Un amigo me dio otro codigo para que yo lo fuera modificando, lo que he conseguido es que si me lee el archivo de excel pero al momento de pasarlo al notepad me lo deja en blanco, perdon pero como les digo son mis primeras intervenciones con Visual Fox Pro, este es el otro codigo:

    *** Lee_Excel_Genera_Csv.prg

    ***

    CLOSE DATABASES

    *** Seleccionar archivo de Excel

    XlsOpen = GETFILE('xls', 'Archivo:', 'Recibir',0, 'Archivo de Infonavit para Importar')

    IF LEN(XlsOpen)>0SET DATE TO DMY

    CLOSE DATABASES

    *** Crea tabla

    DELETE FILE tempo.dbf

    CREATE TABLE tempo (dat1 C(10), dat2 C(11), dat3 C(13), dat4 N(2,0))

    CLOSE DATABASES

    SELECT 1

    USE tempo

    *** Genera acceso al archivo de Excel (objeto)

    Excel=CreateObject("Excel.Application")

    Excel.Application.Visible=.F.

    Excel.Workbooks.Open(XlsOpen)

    WITH Excel

    .Sheets(1).Select

    FOR ren=2 to 65536

    vexA='A'+ALLTRIM(STR(ren))

    vdat1Type=VARTYPE(.Range(vexA).Value)

    IF vdat1Type='X'EXIT

    ENDIF

    IF vdat1Type='N'

    vdat1=ALLTRIM(STR(.Range(vexA).Value))

    ELSE

    vdat1=ALLTRIM(.Range(vexA).Value)ENDIF

     

    vexB='B'+ALLTRIM(STR(ren))

    vdat2Type=VARTYPE(.Range(vexB).Value)

    IF vdat2Type='N'

    vdat2=TRANSFORM(.Range(vexB).Value,'@L 99999999999')

    ELSE

    vdat2=ALLTRIM(.Range(vexB).Value)ENDIF

     

    vexC='C'+ALLTRIM(STR(ren))

    vdat3Type=VARTYPE(.Range(vexC).Value)

    IF vdat3Type='N'

    vdat3=ALLTRIM(STR(.Range(vexC).Value))

    ELSE

    vdat3=ALLTRIM(.Range(vexC).Value)

    ENDIF

    IF LEN(vdat3)=12

    vdat3=' '+vdat3

    ENDIF

    vexD='D'+ALLTRIM(STR(ren))

    vdat4Type=VARTYPE(.Range(vexD).Value)

    IF vdat4Type='N'

    vdat4=.Range(vexD).Value

    ELSE

    vdat4=VAL(ALLTRIM(.Range(vexD).Value))ENDIF

     

     

     

    *** vexAN='AN'+ALLTRIM(STR(ren))

    *** vCvemovType=VARTYPE(.Range(vexAN).Value)

    *** IF vCvemovType='C'

    *** vCvemov=ALLTRIM(.Range(vexAN).Value)

    *** ELSE

    *** vCvemov=ALLTRIM(STR(.Range(vexAN).Value))

    *** ENDIF

    ***

    *** vexAO='AO'+ALLTRIM(STR(ren))

    *** vF_movType=VARTYPE(.Range(vexAO).Value)

    *** IF vF_movType='C'

    *** vF_mov1=ALLTRIM(.Range(vexAO).Value)

    ***

    *** IF LEN(vF_mov1)=9 AND SUBSTR(vF_mov1,2,1)='/'

    *** vF_mov1='0'+SUBSTR(vF_mov1,1,1)+'/'+SUBSTR(vF_mov1,3,2)+'/'+RIGHT(vF_mov1,4)

    *** ENDIF

    *** ELSE

    *** IF vF_movType='T'

    *** vF_mov1=ALLTRIM(TTOC(.Range(vexAO).Value))

    *** ENDIF

    *** IF vF_movType='D'

    *** vF_mov1=ALLTRIM(DTOC(.Range(vexAO).Value))

    *** IF YEAR(vF_mov1)=0

    *** SET DATE TO MDY

    *** vF_mov1=ALLTRIM(DTOC(.Range(vexAO).Value))

    *** SET DATE TO DMY

    *** ENDIF

    *** ENDIF

    *** ENDIF

    *** vF_mov=CTOD(vF_mov1)

    *** IF LEN(vTipo)=0

    *** EXIT

    *** ELSE

    SELECT 1SET DATE TO DMY

    APPEND BLANK

    REPLACE dat1 WITH vdat1

    REPLACE dat2 WITH vdat2

    REPLACE dat3 WITH vdat3

    *** REPLACE dat4 WITH vdat4

    *** REPLACE nss WITH vnss

    *** REPLACE rfc WITH vrfc

    *** REPLACE curp WITH vcurp

    *** REPLACE credinfo WITH vcredinfo

    *** REPLACE f_credito WITH vf_credito

    *** REPLACE mov WITH vmov

    *** REPLACE nombrec WITH vnombrec

    *** REPLACE salario WITH vsalario

    *** REPLACE tipotrab WITH vtipotrab

    *** REPLACE jornada WITH vjornada

    *** REPLACE diascot WITH vdiascot

    *** REPLACE incmes WITH vincmes

    *** REPLACE faltasmes WITH vfaltasmes

    *** REPLACE cuotafija WITH vcuotafija

    *** REPLACE excedente WITH vexcedente

    *** REPLACE pre_din WITH vpre_din

    *** REPLACE pre_esp WITH vpre_esp

    *** REPLACE rie_tra WITH vrie_tra

    *** REPLACE inv_vida WITH vinv_vida

    *** REPLACE guarderias WITH vguarderias

    *** REPLACE act_se WITH vact_se

    *** REPLACE diascotbim WITH vdiascotbim

    *** REPLACE diasincbim WITH vdiasincbim

    *** REPLACE diasausbim WITH vdiasausbim

    *** REPLACE retiro WITH vretiro

    *** REPLACE act_ret WITH vact_ret

    *** REPLACE cesantia WITH vcesantia

    *** REPLACE vejez WITH vvejez

    *** REPLACE act_ces WITH vact_ces

    *** REPLACE apor_vol WITH vapor_vol

    *** REPLACE pat_info WITH vpat_info

    *** REPLACE amortiz WITH vamortiz

    *** REPLACE paterno WITH vpaterno

    *** REPLACE materno WITH vmaterno

    *** REPLACE nombre WITH vnombre

    *** REPLACE cvemov WITH vcvemov

    *** REPLACE f_mov WITH vf_mov

    *** ENDIF

    WAIT WINDOW 'Cargando -> '+TRANSFORM(ren-1,'@L 99999') NOWAIT

    ENDFOR

    ENDWITH

    Excel.ActiveWorkbook.Close

    Excel.Quit

    =SYS(1016)

     

    *** Genera archivo .CSV

    CLOSE DATABASES

    SELECT 1

    USE tempo

    vDir=SYS(5)+SYS(2003)

    vFileCsv=vDir+'\Archivo.csv'

    !
    Attrib -r &vFileCsv

    arch='Archivo.csv'

    DELETE FILE arch

    canal=FCREATE(arch,0)

    IF canal<0

    = FCLOSE(canal)

    WAIT WINDOW NOWAIT "No se puede crear el archivo <'+arch+'>"

    ELSE

    *** Loop para generar archivo .csv

    *** DO WHILE NOT EOF()

    *** vfecha=IIF(YEAR(fecha_ini)>0,TRANSFORM(YEAR(fecha_ini),'@L 9999-')+TRANSFORM(MONTH(fecha_ini),'@L 99-')+TRANSFORM(DAY(fecha_ini),'@L 99'),'')

    *** vfechas=IIF(YEAR(fec_susp)>0,TRANSFORM(YEAR(fec_susp),'@L 9999-')+TRANSFORM(MONTH(fec_susp),'@L 99-')+TRANSFORM(DAY(fec_susp),'@L 99'),'')

    *** vfechab=IIF(YEAR(fecha_b)>0,TRANSFORM(YEAR(fecha_b),'@L 9999-')+TRANSFORM(MONTH(fecha_b),'@L 99-')+TRANSFORM(DAY(fecha_b),'@L 99'),'')

    *** vfechac=IIF(YEAR(fec_cambio)>0,TRANSFORM(YEAR(fec_cambio),'@L 9999-')+TRANSFORM(MONTH(fec_cambio),'@L 99-')+TRANSFORM(DAY(fec_cambio),'@L 99'),'')

    *** IF vTriptico=1

    *** IF ALLTRIM(tip)='CFVSM'

    *** porc_m=TRANSFORM(tip_porc,'@ 99.9999')

    *** ELSE

    *** porc_m=TRANSFORM(vporc1,'@ 99.99')

    *** ENDIF

    *** ELSE

    *** IF ALLTRIM(tip)='CFVSM'

    *** porc_m=TRANSFORM(tip_porc,'@ 99.9999')

    *** ELSE

    *** porc_m=TRANSFORM(tip_porc,'@ 99.99')

    *** ENDIF

    *** ENDIF

    *** var_aux=ALLTRIM(STR(periodo))+','+ALLTRIM(rfc_emp)+','+ALLTRIM(nombre)+','+ALLTRIM(STR(cred_eba))+','+;

    *** ALLTRIM(nss)+','+ALLTRIM(tip)+','+porc_m+','+ALLTRIM(vfecha)+','+ALLTRIM(vfechas)+','+ALLTRIM(vfechab)+','+;

    *** ALLTRIM(STR(camb_mont,10,4))+','+ALLTRIM(vfechac)+','+ALLTRIM(STR(sdi,17,2))+','+ALLTRIM(STR(dias_real))+','+ALLTRIM(STR(base,17,2))+','+;

    *** ALLTRIM(STR(calculad,17,2))+','+ALLTRIM(STR(amortz_sua,17,2))+','+ALLTRIM(STR(diferencia,17,2))+','+ALLTRIM(reg_pat)

    *** FPUTS(canal,var_aux)

    *** SKIP 1

    *** ENDDO

    ENDIF

    =FCLOSE(canal)

    vDir=SYS(5)+SYS(2003)

    vFileCsv=vDir+'\Archivo.csv'

    !
    Attrib +r &vFileCsv

    DECLARE INTEGER ShellExecute IN shell32 AS x STRING,STRING,STRING,STRING,STRING,INTEGER

    a=x(0,'open','c:\windows\notepad.exe',vFileCsv,"",1)

    =MESSAGEBOX("Se creó el archivo .CSV con éxito",64+0+0,"Excel")

    ELSE

    nAnswer=MESSAGEBOX("Proceso cancelado",0+64+0,' NOTIFICACIÓN')

    ENDIF

    CLOSE DATABASES

    Espero que alguien me pueda apoyar, de antemano mil gracias.

     

     

    • Puntos de post: 0
  • 10-24-2007 12:13 PM en respuesta a

    • cxmontes
    • Contribuyente Top 75
    • Se unió el 04-21-2007
    • Envíos: 3
    • Puntos: 0

    Re: Apoyo para modificar programa

    Dos cosas:

    1. Por qué en lugar de usar create table, no usas create cursor ? 

    2. El comando COPY TO miArchivo TYPE CSV hace el truco sin necesidad de usar fopen y fclose.

    Espero te ayude.

    c.x.

    • Puntos de post: 0
Página 1 de 1 (2 elementos)
Alguna publicidad
© 2007 MSGuayaquil. Todos los derechos reservados.
Powered By IIS 6 Powered By ASP.NET 2.0 Ofrecido por Community Server (Commercial Edition) Powered By SQL Server 2005
Creado y Administrado por Julio Casal