Autor Tema: ¿Cómo exporto un reporte a Excel?  (Leído 14930 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado gilanrodas

  • Sv Full Member
  • *
  • Mensajes: 527
  • What Would Jesus Do?
¿Cómo exporto un reporte a Excel?
« : abril 15, 2009, 09:59:12 am »
Tengo unos reportes que quiero exportar a Excel respetando tabulaciones, encabezados, etc. ¿Alquien me puede decir cómo lo puedo hacer?

¡Muchas gracias!

Desconectado Reptile

  • The Communiter-
  • *
  • Mensajes: 1159
  • Fight!
Re: ¿Cómo exporto un reporte a Excel?
« Respuesta #1 : abril 15, 2009, 10:03:57 am »
Reportes de que? Crystal, Access, etc??

Desconectado gilanrodas

  • Sv Full Member
  • *
  • Mensajes: 527
  • What Would Jesus Do?
Re: ¿Cómo exporto un reporte a Excel?
« Respuesta #2 : abril 15, 2009, 10:06:10 am »
Reportes de que? Crystal, Access, etc??

Un reporte, un informe de fox, la vista de una hoja que se va a mandar a imprimir con datos que se extraen desde una Base de Datos y otros que se obtienen de operaciones en la misma.

Desconectado gilanrodas

  • Sv Full Member
  • *
  • Mensajes: 527
  • What Would Jesus Do?
Re: ¿Cómo exporto un reporte a Excel?
« Respuesta #3 : abril 15, 2009, 10:55:09 am »
Tengo unos reportes que quiero exportar a Excel respetando tabulaciones, encabezados, etc. ¿Alquien me puede decir cómo lo puedo hacer?

¡Muchas gracias!

¿Alguna ayudita? De voladas que me urge.

Desconectado ruiz

  • Sv Full Member
  • *
  • Mensajes: 729
Re: ¿Cómo exporto un reporte a Excel?
« Respuesta #4 : abril 15, 2009, 11:25:18 am »
mira quie ten pongo un ejemplo:



If Used('mi_cursor_final')
   Use In 'mi_cursor_final'
Endif


Use venta_productos.Dbf Alias 'mi_cursor_final'


x_registros = Afields(campos,'mi_cursor_final')

*x_periodo = 'Fecha inicial : '+ p_fecha_inicial + Space(10) + 'Fecha final : ' + p_fecha_final

xlCenter   = -4108
xlBottom   = -4107
xlContext   = -5002

xlDiagonalDown      = 5
xlDiagonalUp      = 6
xlEdgeLeft         = 7
xlEdgeTop         = 8
xlEdgeBottom      = 9
xlEdgeRight         = 10
xlInsideVertical   = 11
xlInsideHorizontal   = 12

xlNone            = -4142
xlContinuous      = 1
xlAutomatic         = -4105
xlHairline         = 1

Wait Windows 'Creado el objeto Excel....' Nowait
oexcel = Createobject('excel.application')
oexcel.Workbooks.Add

If Type('oexcel') = 'O'
   x_fila      = 1
   x_columna    = 1

   Wait Windows 'Generando encabezados...' Nowait

   oexcel.cells(x_fila,x_columna).Select
   oexcel.Selection.Font.Size = 12
   oexcel.Selection.Font.Bold = .T.
   oexcel.Selection.Value = 'EMPRESA DE LOS TRES COCO'

   x_fila = x_fila + 1

   oexcel.cells(x_fila,x_columna).Select
   oexcel.Selection.Font.Size = 10
   oexcel.Selection.Font.Bold = .T.
   oexcel.Selection.Value = 'REPORTE DE PRODUCTO POR SUCURSAL'


   x_fila = x_fila + 2

   oexcel.Rows(x_fila).Select
   oexcel.Selection.Font.Bold = .T.


   For i = 1 To x_registros

      x_columna = i

      If x_columna = 1
         oexcel.cells(x_fila,x_columna).Select
         oexcel.Selection.ColumnWidth = 30
         oexcel.cells(x_fila,x_columna).Value = campos(i,1)
      Endif

      If Mod(i,2) = 0 &&Or i = x_registros

         oexcel.Columns(i).Select
         oexcel.Selection.NumberFormat = "#,##0"
         oexcel.Selection.ColumnWidth = 5.5

         oexcel.Columns(i+1).Select
         oexcel.Selection.NumberFormat = "#,##0.00"
         oexcel.Selection.ColumnWidth = 8

         If Substr(campos(i,1),Len(campos(i,1))-1,1) = '_'
            oexcel.cells(x_fila,x_columna).Value = Substr(campos(i,1),1,Len(campos(i,1))-2)
         Else
            oexcel.cells(x_fila,x_columna).Value = campos(i,1)
         Endif

         oexcel.Range(oexcel.cells(x_fila,x_columna),oexcel.cells(x_fila,x_columna+1)).Select
         With oexcel.Selection
            .HorizontalAlignment = xlCenter
            .VerticalAlignment = xlBottom
            .WrapText = .F.
            .Orientation = 0
            .AddIndent = .F.
            .IndentLevel = 0
            .ShrinkToFit = .F.
            .ReadingOrder = xlContext
            .MergeCells = .F.
         Endwith
         oexcel.Selection.Merge

         If i = x_registros-1
            oexcel.cells(x_fila,x_columna).Value = 'TOTAL'
         Endif
      Endif
   Next

   x_fila = x_fila + 1

   For i = 2 To x_registros

      x_columna = i

      If Mod(i,2) = 0
         oexcel.cells(x_fila,x_columna).Value = 'CANT'
      Else
         oexcel.cells(x_fila,x_columna).Value = 'MONTO'
      Endif
   Next


   oexcel.Range(oexcel.Columns(1),oexcel.Columns(x_registros)).Select


   oexcel.Rows(x_fila).Select
   oexcel.Selection.Font.Bold = .T.
   With oexcel.Selection
      .HorizontalAlignment = xlCenter
      .VerticalAlignment = xlBottom
      .WrapText = .F.
      .Orientation = 0
      .AddIndent = .F.
      .IndentLevel = 0
      .ShrinkToFit = .F.
      .ReadingOrder = xlContext
      .MergeCells = .F.
   Endwith

   Select mi_cursor_final
   Go Top
   Scan
      x_columna    = 0
      x_fila = x_fila + 1
      Wait Windows 'Enviando a  excel el producto ----> ' + Alltrim(producto) Nowait
      For i = 1 To x_registros
         x_columna    = x_columna + 1
         x_valor    = 'mi_cursor_final.' + campos(i,1)
         x_tipo       = campos(i,2)

         If x_tipo = 'N'
            oexcel.cells(x_fila,x_columna).Value = &x_valor
         Else
            oexcel.cells(x_fila,x_columna).Value  = [']+&x_valor
         Endif
      Next

   Endscan

   oexcel.Rows(x_fila).Select
   oexcel.Selection.Font.Bold = .T.


   oexcel.Range(oexcel.cells(6,1),oexcel.cells(x_fila,x_columna)).Select

   oexcel.Selection.BorderS(xlDiagonalDown).LineStyle = xlNone
   oexcel.Selection.BorderS(xlDiagonalUp).LineStyle = xlNone
   With oexcel.Selection.BorderS(xlEdgeLeft)
      .LineStyle = xlContinuous
      .ColorIndex = xlAutomatic
      .Weight = xlHairline
   Endwith
   With oexcel.Selection.BorderS(xlEdgeTop)
      .LineStyle = xlContinuous
      .ColorIndex = xlAutomatic
      .Weight = xlHairline
   Endwith
   With oexcel.Selection.BorderS(xlEdgeBottom)
      .LineStyle = xlContinuous
      .ColorIndex = xlAutomatic
      .Weight = xlHairline
   Endwith
   With oexcel.Selection.BorderS(xlEdgeRight)
      .LineStyle = xlContinuous
      .ColorIndex = xlAutomatic
      .Weight = xlHairline
   Endwith
   With oexcel.Selection.BorderS(xlInsideVertical)
      .LineStyle = xlContinuous
      .ColorIndex = xlAutomatic
      .Weight = xlHairline
   Endwith
   With oexcel.Selection.BorderS(xlInsideHorizontal)
      .LineStyle = xlContinuous
      .ColorIndex = xlAutomatic
      .Weight = xlHairline
   Endwith

   oexcel.Selection.Font.Size = 8
   oexcel.Visible = .T.

   Release oexcel

Else

   Messagebox('Excel no esta instalado en este equipo.....' ,0 +64 , 'Advertencia')

Endif

Desconectado eduardoantonio10

  • Sv Member
  • ***
  • Mensajes: 108
Re: ¿Cómo exporto un reporte a Excel?
« Respuesta #5 : abril 15, 2009, 01:12:08 pm »
Ta muy bueno el anterio y si lo quieres exporta a cubo de excel para no hacer reporte personalizados a cada persona pero lo unico q cuesta un poco al princio por las personas al usar cubos de excel ya q no todos lo saben usar

TRY

SELECT Codigocliente as Codigo,abreviatura as TIPOFact, numerodocumento as FACTURA ,;
      nombrecondicion as CONDICION, montodocumento as Valor,ROUND(montodocumento /1.13,2) as VALnoIVA ,;
      unidades, cantidad as Libras,  allt(nombrecliente)+" "+allT(apellidocliente) as CLIENTE,;
      UPPER(nombrevendedor) as VENDEDOR, nombrebodega as bodega,TTOD(fechadocumento) as FECHA, ;
      WEEK(fechadocumento) AS SEMANA,PADL(allt(STR(MONTH(fechadocumento))),2,'0')as MES ,;
      YEAR(fechadocumento)as ANNIO ,;
      nombretipop as TipoVenta, montodescuentototal as Descuento,ruta,zonaruta ;
    FROM cDatos WHERE !DELETED() INTO TABLE c:\ccubo




   
USE IN SELECT('ccubo')



   #define DATAPATH   "c:\"
   *set step on

   oExcel = createobject("excel.application")
   oExcel.Application.Visible = .T.

   * Create a workbook.
   oWorkbook = oExcel.Workbooks.Add()
   LOCAL anom
   anom=oexcel.ActiveSheet.name
   * Define the source connection and SQL command to use.
   dimension aSource[2]
   aSource[1] = "Driver={Microsoft Visual FoxPro Driver};" +;
            "UID=;PWD=;"                         +;
            "SourceDB=" + DATAPATH + ";"             +;
            "SourceType=DBF;"                     +;
            "Exclusive=No;BackgroundFetch=Yes;Collate=Machine;"+;
            "Null=Yes;Deleted=Yes;"
   aSource[2] = "select * from ccubo"

   * Define an Excel range object to dump the results.
   oTargetSheet = oWorkbook.Sheets.Add()
   oTargetRange = oTargetSheet.range("A2")

   * Create a pivot table object.
   oPivotTable = oExcel.Sheets[1].PivotTableWizard( 2,;   && source is external data.
                     @aSource, ;
                     oTargetRange, ;
                     "PivotTable", .T., .T. )

   * Define how the data would initally be arranged in
   * the pivot table.
         && row

&& aqui el 1 fila 2 columna 3 campo y 4 datos
   oPivotTable.PivotFields("TipoVenta").orientation = 1
   oPivotTable.PivotFields("bodega").orientation = 1
   oPivotTable.PivotFields("mes").orientation = 2   && column
   oPivotTable.PivotFields("valor").orientation = 3   &&
   oPivotTable.PivotFields("UNIDADES").orientation = 3
   oPivotTable.PivotFields("libras").orientation = 3

   oPivotTable.PivotFields("cliente").orientation = 3
   oPivotTable.PivotFields("VALnoIVA").orientation = 4
   oPivotTable.PivotFields("TIPOFact").orientation = 3
   oPivotTable.PivotFields("FACTURA").orientation = 3
   oPivotTable.PivotFields("CONDICION").orientation = 3
   oPivotTable.PivotFields("VENDEDOR").orientation = 3

   oPivotTable.PivotFields("FECHA").orientation = 3
   oPivotTable.PivotFields("SEMANA").orientation = 3
   oPivotTable.PivotFields("ANNIO").orientation = 3
   oPivotTable.PivotFields("Descuento").orientation = 3
      oPivotTable.PivotFields("ruta").orientation = 3
         oPivotTable.PivotFields("zonaruta").orientation = 3
   
   


   oexcel.ActiveSheet.name = 'CUBO'
CATCH TO oException
      
      
      
   MESSAGEBOX(er,16, "  Error     : " + STR(oErr.ErrorNo)  +CHR(13) +;
      "  LineNo    : " + STR(oErr.LineNo)+CHR(13) +;
       "  Message   : " + STR(oErr.Message ) +CHR(13) +;
       "  Procedure : " + STR(oErr.Procedure ) +CHR(13) +;
      "  UserValue : " + STR(oErr.UserValue ) +CHR(13) +;
      "  Details   : " + STR(oErr.Details ) +CHR(13) )

FINALLY

   oExcel = null
   oPivotTable =null 
   oTargetSheet=null 
   oTargetRange=null 

ENDTRY


Desconectado tekun

  • -^- Elite Silver -^-
  • The Communiter-
  • *
  • Mensajes: 3221
  • Han convertido mi casa en cueva de mercaderes!!!!
    • www.tekun.es
Re: ¿Cómo exporto un reporte a Excel?
« Respuesta #6 : abril 15, 2009, 03:18:44 pm »
hace rato publique un post con algo similar...
[HOW TO] Exportar a Excel resultado de un Query
lo difícil lo hago rápido, con lo imposible, casi siempre me tardo un poquito

Desconectado eduardoantonio10

  • Sv Member
  • ***
  • Mensajes: 108
Re: ¿Cómo exporto un reporte a Excel?
« Respuesta #7 : abril 15, 2009, 04:27:08 pm »
hace rato publique un post con algo similar...
[HOW TO] Exportar a Excel resultado de un Query

si esta muy bueno solo q esta para vb.net como ya lo mencionas y ademas esto segun entiendo yo solo  te exporta los datos pero no te genera un cubo directamente auque ya en excel se puede general manualmente


Desconectado kikeuntercio

  • Sv Vampire Team ®
  • The Communiter-
  • ***
  • Mensajes: 1545
  • -] java Adict [-
    • Comunidad Bitcoin de Oriente
Re: ¿Cómo exporto un reporte a Excel?
« Respuesta #8 : abril 24, 2009, 04:25:14 pm »
juela la verdad esta medio candela estas respuestas que le dieron, yo creo que podria ser asi:

tomando en cuenta que un reporte es una simple muestra de un filtro.

1. selecionar los datos que ocupas
2. copiar el resultado a excel (copy to nombredelibro type xl5)

Miembro y co-fundador original de VampireTeam
Bitcoiner
CopyMaster en Finandy.com como: WillockSV

Desconectado eduardoantonio10

  • Sv Member
  • ***
  • Mensajes: 108
Re: ¿Cómo exporto un reporte a Excel?
« Respuesta #9 : abril 24, 2009, 04:41:22 pm »
juela la verdad esta medio candela estas respuestas que le dieron, yo creo que podria ser asi:

tomando en cuenta que un reporte es una simple muestra de un filtro.

1. selecionar los datos que ocupas
2. copiar el resultado a excel (copy to nombredelibro type xl5)



jiji  :D  no esta tan dificil de lo q crees solo es un poco de decicacion y tiempo para probar
y buscar los comando de excel y las variables

Desconectado kikeuntercio

  • Sv Vampire Team ®
  • The Communiter-
  • ***
  • Mensajes: 1545
  • -] java Adict [-
    • Comunidad Bitcoin de Oriente
Re: ¿Cómo exporto un reporte a Excel?
« Respuesta #10 : abril 24, 2009, 04:51:10 pm »
bueno ya lei mejor la prunga y veo que si es necesario mas codigo ya que quiere mantener formatos.
Miembro y co-fundador original de VampireTeam
Bitcoiner
CopyMaster en Finandy.com como: WillockSV

llquezada

  • Visitante
Re: ¿Cómo exporto un reporte a Excel?
« Respuesta #11 : mayo 10, 2009, 04:42:23 pm »
 :diablo:

es un simple filtro

haces el select o la transaccion y le das

copy to c:\nombre.xls type xl5

y listo