Guardar o Grabar archivo xls a archivo.txt (Solucionado)
Publicado: Mié Nov 18, 2015 4:30 pm
Buenas a todos, tengo una duda de como implementar o programar un procedimiento que me permita grabar un archivo excel y pasarlo a archivo txt
La idea es procecar la hoja de calculo, que luego se ve en browse, y despues grabarlo como txt; Si alguno tiene una idea de como hacerlo, desde ya gracias. Me falta el boton btGrabarClick que no tiene nada.
#include "Xailer.ch"
CLASS TProcesarPagoSueldos FROM TForm
COMPONENT oBevel1
COMPONENT btArchivo
COMPONENT oProg
COMPONENT oLabel1
COMPONENT oLabel2
COMPONENT oBevel2
COMPONENT btProcesar
COMPONENT btGrabar
COMPONENT oTBr
COMPONENT oFileOpenDlg1
COMPONENT oTBrColumn1
COMPONENT oTBrColumn2
METHOD CreateForm()
METHOD btArchivoClick( oSender )
METHOD btProcesaraClick( oSender )
METHOD btGrabarClick( oSender )
ENDCLASS
#include "ImportarPagoSueldosExcel.xfm"
//------------------------------------------------------------------------------
METHOD btArchivoClick( oSender ) CLASS TProcesarPagoSueldos
if ::oFileOpenDlg1:Execute() .and. File(::oFileOpenDlg1:cFullFileName)
::oLabel1:cText:=::oFileOpenDlg1:cFullFileName
::btProcesar:lEnabled:=.T.
else
::oLabel1:cText:=''
::btProcesar:lEnabled:=.F.
endif
RETURN Nil
//------------------------------------------------------------------------------
METHOD btProcesaraClick( oSender ) CLASS TProcesarPagoSueldos
local oExcel, oSheet, lOk, i, cCelda, nMaxRows, aLinea
local nCasa, nCuenta, nCodMov, dFechapago, cIdentEmp, nLegajo, nImporte, cTitular, nTipoDoc, nNroDoc
TRY
oExcel := GetActiveObject( "Excel.Application" )
::btProcesar:lEnabled:=.T.
lOk :=.T.
CATCH
TRY
oExcel := CreateObject('Excel.Application')
lOk:=.T.
CATCH
Alert( "ERROR! Excel not avialable. ["+Ole2TxtError()+"]" )
END
END
if lOk
::btProcesar:lEnabled:=.F.
oExcel:WorkBooks():Open(::oLabel1:cText)
oSheet:=oExcel:Worksheets(1)
oSheet:Calculate()
nMaxRows:=MaximoRowsXLS(oSheet,'A')
::oProg:nValue:=1
::oProg:nMax :=nMaxRows
::oProg:nMin :=1
for i:=1 to nMaxRows
::oProg:StepIt()
if ::oProg:nValue%5==0
ProcessMessages()
endif
cCelda:='A'+AllTrim(Str(i,5,0))
nCasa:=oSheet:Range(cCelda):Value
cCelda:='B'+AllTrim(Str(i,5,0))
nCuenta:=oSheet:Range(cCelda):Value
cCelda:='C'+AllTrim(Str(i,5,0))
nCodMov:=oSheet:Range(cCelda):Value
cCelda:='D'+AllTrim(Str(i,5,0))
dFechapago:=oSheet:Range(cCelda):Value
cCelda:='E'+AllTrim(Str(i,5,0))
cIdentEmp:=oSheet:Range(cCelda):Value
cCelda:='F'+AllTrim(Str(i,5,0))
nLegajo:=oSheet:Range(cCelda):Value
cCelda:='G'+AllTrim(Str(i,5,0))
nImporte:=oSheet:Range(cCelda):Value
cCelda:='H'+AllTrim(Str(i,5,0))
cTitular:=oSheet:Range(cCelda):Value
cCelda:='I'+AllTrim(Str(i,5,0))
nTipoDoc:=oSheet:Range(cCelda):Value
cCelda:='J'+AllTrim(Str(i,5,0))
nNroDoc:=oSheet:Range(cCelda):Value
if !Empty(nCasa)
::oTBr:AddRow({nCasa, nCuenta, nCodMov, dFechapago, cIdentEmp, nLegajo, nImporte, cTitular, nTipoDoc, nNroDoc})
endif
next
oExcel:ActiveWorkbook:Close( .F. )
::btProcesar:lEnabled:=.F.
::btGrabar:lEnabled:=.T.
endif
oExcel := NIL
::oProg:nValue:=0
RETURN Nil
//------------------------------------------------------------------------------
METHOD btGrabarClick( oSender ) CLASS TProcesarPagoSueldos
Return Nil
La idea es procecar la hoja de calculo, que luego se ve en browse, y despues grabarlo como txt; Si alguno tiene una idea de como hacerlo, desde ya gracias. Me falta el boton btGrabarClick que no tiene nada.
#include "Xailer.ch"
CLASS TProcesarPagoSueldos FROM TForm
COMPONENT oBevel1
COMPONENT btArchivo
COMPONENT oProg
COMPONENT oLabel1
COMPONENT oLabel2
COMPONENT oBevel2
COMPONENT btProcesar
COMPONENT btGrabar
COMPONENT oTBr
COMPONENT oFileOpenDlg1
COMPONENT oTBrColumn1
COMPONENT oTBrColumn2
METHOD CreateForm()
METHOD btArchivoClick( oSender )
METHOD btProcesaraClick( oSender )
METHOD btGrabarClick( oSender )
ENDCLASS
#include "ImportarPagoSueldosExcel.xfm"
//------------------------------------------------------------------------------
METHOD btArchivoClick( oSender ) CLASS TProcesarPagoSueldos
if ::oFileOpenDlg1:Execute() .and. File(::oFileOpenDlg1:cFullFileName)
::oLabel1:cText:=::oFileOpenDlg1:cFullFileName
::btProcesar:lEnabled:=.T.
else
::oLabel1:cText:=''
::btProcesar:lEnabled:=.F.
endif
RETURN Nil
//------------------------------------------------------------------------------
METHOD btProcesaraClick( oSender ) CLASS TProcesarPagoSueldos
local oExcel, oSheet, lOk, i, cCelda, nMaxRows, aLinea
local nCasa, nCuenta, nCodMov, dFechapago, cIdentEmp, nLegajo, nImporte, cTitular, nTipoDoc, nNroDoc
TRY
oExcel := GetActiveObject( "Excel.Application" )
::btProcesar:lEnabled:=.T.
lOk :=.T.
CATCH
TRY
oExcel := CreateObject('Excel.Application')
lOk:=.T.
CATCH
Alert( "ERROR! Excel not avialable. ["+Ole2TxtError()+"]" )
END
END
if lOk
::btProcesar:lEnabled:=.F.
oExcel:WorkBooks():Open(::oLabel1:cText)
oSheet:=oExcel:Worksheets(1)
oSheet:Calculate()
nMaxRows:=MaximoRowsXLS(oSheet,'A')
::oProg:nValue:=1
::oProg:nMax :=nMaxRows
::oProg:nMin :=1
for i:=1 to nMaxRows
::oProg:StepIt()
if ::oProg:nValue%5==0
ProcessMessages()
endif
cCelda:='A'+AllTrim(Str(i,5,0))
nCasa:=oSheet:Range(cCelda):Value
cCelda:='B'+AllTrim(Str(i,5,0))
nCuenta:=oSheet:Range(cCelda):Value
cCelda:='C'+AllTrim(Str(i,5,0))
nCodMov:=oSheet:Range(cCelda):Value
cCelda:='D'+AllTrim(Str(i,5,0))
dFechapago:=oSheet:Range(cCelda):Value
cCelda:='E'+AllTrim(Str(i,5,0))
cIdentEmp:=oSheet:Range(cCelda):Value
cCelda:='F'+AllTrim(Str(i,5,0))
nLegajo:=oSheet:Range(cCelda):Value
cCelda:='G'+AllTrim(Str(i,5,0))
nImporte:=oSheet:Range(cCelda):Value
cCelda:='H'+AllTrim(Str(i,5,0))
cTitular:=oSheet:Range(cCelda):Value
cCelda:='I'+AllTrim(Str(i,5,0))
nTipoDoc:=oSheet:Range(cCelda):Value
cCelda:='J'+AllTrim(Str(i,5,0))
nNroDoc:=oSheet:Range(cCelda):Value
if !Empty(nCasa)
::oTBr:AddRow({nCasa, nCuenta, nCodMov, dFechapago, cIdentEmp, nLegajo, nImporte, cTitular, nTipoDoc, nNroDoc})
endif
next
oExcel:ActiveWorkbook:Close( .F. )
::btProcesar:lEnabled:=.F.
::btGrabar:lEnabled:=.T.
endif
oExcel := NIL
::oProg:nValue:=0
RETURN Nil
//------------------------------------------------------------------------------
METHOD btGrabarClick( oSender ) CLASS TProcesarPagoSueldos
Return Nil