Exportar a Excel, sin abrir el archivo de resultados

Exportar a Excel, sin abrir el archivo de resultados

Postby mariordz » Tue Sep 19, 2017 3:35 pm

(Lo había puesto en el foro en Inglés).... :oops:

Buenos días Fivewineros, estoy exportando un DBF a Excel con el metodo antiguo para mi (Simplemente le cambio la extensión al archivo de .DBF a .XLS y Excel lo abre sin problemas), pero tengo un comportamiento raro, agregué varios campos (que hacen las veces de columnas en Excel), pero al exportar los datos de esas columnas aparecen vacias, las cabeceras si estan en mi archivo de resultados, pero los datos no (bastante raro, ya que antes de darle el comando "copy to" le puse un xbrowse para ver la información y si aparecen los datos en las columnas que acabo de agregar.

Para tratar de darle la vuelta al asunto y de paso usar los metodos correctos hice un Xbrowse y usé la clausula ToExcel(), lo que necesito saber es como le hago para que no me abra el archivo de resultados, solo necesito que lo salve en una ubicación que ya tengo predeterminada.

Uso FW1604+Harbour+bcc7


Primero le pido al usuario un directorio donde salvar los resultados

Code: Select all  Expand view  RUN
cDirinfo=cGetdir("Selecciona el directorio para guardar la información generada")





Despues genero un dialogo para mostrar los datos con un boton para exportarlo a excel (si hubiera una forma de ejecutar el "TOExcel()" SIN abrir un dialogo estaría mejor)

Code: Select all  Expand view  RUN

    DEFINE DIALOG oDlg SIZE 800,600 PIXEL //FONT oFont

       @ 10, 10 XBROWSE oBrw ;
                SIZE 120, 70 PIXEL ;
                OF oDlg ;
                AUTOCOLS ;
                LINES
               
       @ 250, 25 BTNBMP oBtn1 OF oDlg ;
        SIZE 80, 15 PIXEL 2007 ;
        NOBORDER ;
        PROMPT " &AExcel() " ;
FILENAME cDirinfo ;
    ACTION ( oBrw:ToExcel())
    oBtn1:cToolTip = { "Enviar a Excel","Exportar", 1, CLR_BLACK, 14089979 }
    oBtn1:SetColor( 0, )

   oBrw:CreateFromCode()

   ACTIVATE DIALOG oDlg CENTERED
 
User avatar
mariordz
 
Posts: 131
Joined: Tue Dec 26, 2006 4:50 pm
Location: Ciudad de México

Re: Exportar a Excel, sin abrir el archivo de resultados

Postby joseluisysturiz » Tue Sep 19, 2017 3:59 pm

Saludos, puedes exportar directamente a excel solo con abrir tu DBF o TABLE, aca un ejemplo de como lo uso, gracias... :shock:

Code: Select all  Expand view  RUN

   LOCAL oExcel, oHoja, nRow := 4, nCol := 1, nFor := 0

   IF oQry:RecCount() == 0
      MSGALERT( "No hay Registros en este Periodo de Fechas: " +;
         DToC( aVar[1] ) + " al " + DToC( aVar[2] ), oDatos:cTitMsg )

      RETURN
   ENDIF

   oExcel := TOleAuto():New( "Excel.Application" )
   oExcel:WorkBooks:Add()

   oHoja := oExcel:ActiveSheet() // SINO ESPECIFICAS QUE HOJA, TOMARA POR DEFECTO LA HOJA1

*   oHoja:Cells(1, 1):Value := "REPORTES DE INTERVENCIÓN POR SERVICIOS AL CLIENTE " +;
*      "SOPORTE FACTURA No. XXXX DE FECHA DD/MM/AAAA"
//
   oHoja:Cells(3, 1):Value := "LLAMADA"
   oHoja:Cells(3, 2):Value := "REPORTE"
   oHoja:Cells(3, 3):Value := "FECHA DE SERVICIO"
   oHoja:Cells(3, 4):Value := "CLIENTE"
   oHoja:Cells(3, 5):Value := "LOCALIDAD"
   oHoja:Cells(3, 6):Value := "TIPO ZONA"
   oHoja:Cells(3, 7):Value := "SERVICIO"
   oHoja:Cells(3, 8):Value := "ORSERVACION"
   oHoja:Cells(3, 9):Value := "TARIFA Bs."

   oQry:GOTOP()
   DO WHILE !oQry:EOF()
      oHoja:Cells(nRow, 1):Value := AllTrim( cValToChar( oQry:rep_num_llamada ) )
      oHoja:Cells(nRow, 2):Value := AllTrim( cValToChar( oQry:rep_num_reporte ) )
      oHoja:Cells(nRow, 3):Value := oQry:rep_fch_servicio
      oHoja:Cells(nRow, 4):Value := AllTrim( oQry:rep_nombre_cliente )
      oHoja:Cells(nRow, 5):Value := AllTrim( oQry:rep_localidad )
      oHoja:Cells(nRow, 6):Value := AllTrim( oQry:rep_tipo_zona )
      oHoja:Cells(nRow, 7):Value := AllTrim( oQry:rep_servicio )
      oHoja:Cells(nRow, 8):Value := "EJECUTADO"//oQry:rep_servicio
      oHoja:Cells(nRow, 9):Value := oQry:rep_tarifa
//
      oQry:SKIP()

      nRow++
   ENDDO

// DESPUES DE CARGADO LOS DATOS A EXCEL, ES QUE SE HACEN LOS AJUSTES
   FOR nFor := 1 TO 9
      oHoja:Cells(3, nFor):Font:Bold := .t. // COLOCA TEXTO DE UNA CELDA EN NEGRITA
      oHoja:Columns(nFor):AutoFit() // AJUSTA LA COLUMNA A LA  CELDA CON EL TEXTO MAS GRANDE
      oHoja:Cells(3, nFor):Interior:Color := RGB(192,192,192) // COLOR FONDO DE LA CELDA(gris claro)
//
      IF nFor > 3
         oHoja:Cells(nFor, 9):NumberFormat := "#.##0,00" // FORMATEAR CELDA NUMERICA
      ENDIF
   NEXT

   oHoja:Cells(nRow, 8):Value := "Total Bs."
   oHoja:Cells(nRow, 8):Font:Bold := .t. // COLOCO EN NEGRITA TEXTO Total Bs.
   oHoja:Cells(nRow, 9):Font:Bold := .t. // COLOCO EN NEGRITA TOTAL DE LA SUMATORIA
   oHoja:Cells(nRow, 9):FormulaLocal:="=SUMA(I4:I" + cValToChar(nRow-1) + ")" // APLICAR FORMULA A UNA CELDA

   oHoja:Range("A3:H" + AllTrim( Str( nRow-1 )) ):HorizontalAlignment := 7 // ALINEA(centra) QUE ESTE EN UN RANGO DE CELDAS HORIZONTALMENTE
// COLOCO TEXTO DE CELDA 1,1 ACA ABAJO PARA QUE NO SE AJUSTE COLUMNA AL TAMAÑO DE ESTE TEXTO
   oHoja:Cells(1, 1):Value := "REPORTES DE INTERVENCIÓN POR SERVICIOS AL CLIENTE " +;
      "SOPORTE FACTURA No. XXXX DE FECHA DD/MM/AAAA"

//
   oHoja:Cells(1, 1):Select() // POSICIONA EL CURSO EN LA CELDA ESPECIFICADA
   oExcel:Visible := .t. // MOSTRAR O NO HOJA DE EXCEL
 
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela

Re: Exportar a Excel, sin abrir el archivo de resultados

Postby cnavarro » Tue Sep 19, 2017 4:29 pm

El cuarto parámetro del method ToExcel es:

Code: Select all  Expand view  RUN

METHOD ToExcel( bProgress, nGroupBy, aCols, lShow, cPDF, bPrePDF ) CLASS TXBrowse

// Prueba a poner en el cuarto parametro .F.
 
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
User avatar
cnavarro
 
Posts: 6552
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Exportar a Excel, sin abrir el archivo de resultados

Postby mariordz » Tue Sep 19, 2017 5:10 pm

Muchas gracias por su respuesta, voy a probar sus sugerencias.

Saludos.
User avatar
mariordz
 
Posts: 131
Joined: Tue Dec 26, 2006 4:50 pm
Location: Ciudad de México

Re: Exportar a Excel, sin abrir el archivo de resultados

Postby nageswaragunupudi » Tue Sep 19, 2017 9:16 pm

This is working for me with Office 365.

Do not open the dbf file also.
Code: Select all  Expand view  RUN
function FW_CopyDBF2XL( cSourceDBF, cDestXLS )

   local oExcel, oBook, oSheet
   local aHead

   oExcel   := ExcelObj()
   oBook    := oExcel:WorkBooks:Open( cSourceDBF )
   oBook:ActiveSheet:UsedRange:Columns:AutoFit()

   if cDestXLS == nil
      oExcel:Visible := .t.
   else
      cDestXLS    := TrueName( cDestXLS )
      oExcel:DisplayAlerts := .f.
      oBook:SaveAs( cDestXLS )
      oBook:Close()
   endif

return nil

Give sourcedbf with full path
Give the destination file name without extension.
Regards

G. N. Rao.
Hyderabad, India
User avatar
nageswaragunupudi
 
Posts: 10690
Joined: Sun Nov 19, 2006 5:22 am
Location: India


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 90 guests