none
VB net y Excel RRS feed

  • Pregunta

  • Hola !... al desarrollar mis aplicaciones me he topado con las siguientes dudas:

    1. Como puedo copiar una hoja de excel de un libro a otro mediante VB net, uso vb net 2005. Es decir tengo los archivos A y B cada uno contine hojas de trabajo... y necesito copiar una hoja desde B hasta A... Alguna sugerencia de codigo ???

    2. Como lograr exportar un reporte de crystal a excel conservando el ancho de columnas y formato. Lo q hago es lo siguiente... genero el reporte en mi aplicacion, lo presento a pantalla, y al dar click en exportar me pide gaurdar el archivo... lo hago y guardo como xls.. me gustaria poder exportar sin q me pida guardar el archivo,e s decir q al exportar solo se abra el excel y muestre los datos exportados y lograr q no se muevan las columnas, es decir que conserven el tamaño ..

    Se q de alguna manera se debe poder, =) les agradezco de ante mano sus sugerencias .. slaudos !!!

    miércoles, 7 de abril de 2010 17:43

Respuestas

  • Hola DZUN

    Para usar excel desde vb.net debes usar los PIA (Primary Interop Assembly) de Office, en concreto el de excel, aquí tienes la web de msdn sobre uso de excel en vb.net:

    http://msdn.microsoft.com/es-es/library/wss56bz7(VS.80).aspx

    Para exportar a excel un crystal report directamente puedes usar este código:

    (debes añadir una referencia a CrystalDecisions.CrystalReports.Engine em tu proyecto)

        Dim rd As New CrystalDecisions.CrystalReports.Engine.ReportDocument
        rd.Load("c:\rutadelrpt\informe.rpt")
        rd.SetDataSource(DataSetDatosInformes)

        Dim oStrem As New System.IO.MemoryStream
        oStrem = CType(rd.ExportToStream(CrystalDecisions.Shared.ExportFormatType.Excel), System.IO.MemoryStream)

        'Si lo deseamos escribimos el excel a disco.
        Dim ArchivoXLS As New System.IO.FileStream("c:\po.xls", IO.FileMode.Create)
        ArchivoXLS.Write(oStrem.ToArray, 0, oStrem.ToArray.Length)
        ArchivoXLS.Flush()

    Un gran saludo!


    MCTS .NET Framework 3.5 Windows Forms Application Development
    Blog
    • Propuesto como respuesta Josue YerayMVP, Moderator miércoles, 7 de abril de 2010 18:11
    • Marcado como respuesta DZUN miércoles, 7 de abril de 2010 21:03
    miércoles, 7 de abril de 2010 18:11
    Moderador

Todas las respuestas

  • Hola !... al desarrollar mis aplicaciones me he topado con las siguientes dudas:

    1. Como puedo copiar una hoja de excel de un libro a otro mediante VB net, uso vb net 2005. Es decir tengo los archivos A y B cada uno contine hojas de trabajo... y necesito copiar una hoja desde B hasta A... Alguna sugerencia de codigo ???

    2. Como lograr exportar un reporte de crystal a excel conservando el ancho de columnas y formato. Lo q hago es lo siguiente... genero el reporte en mi aplicacion, lo presento a pantalla, y al dar click en exportar me pide gaurdar el archivo... lo hago y guardo como xls.. me gustaria poder exportar sin q me pida guardar el archivo,e s decir q al exportar solo se abra el excel y muestre los datos exportados y lograr q no se muevan las columnas, es decir que conserven el tamaño ..

    Se q de alguna manera se debe poder, =) les agradezco de ante mano sus sugerencias .. slaudos !!!


    Para el primero de tus casos lo mejor sería programar en la propia hoja excel en VB. Nunca he tenido la necesidad de programar sobre Microsoft Office pero me consta que sabiendo programar en VB.Net es realmente sencillo.

    Para el segundo de los casos las opciones que te dan son propias del control. Yo en su día intenté modificarlas pero no encontré la forma. Pero puedes hacer lo siguiente. Supongo que para cargar tu reporte en crystal empleas dataset. Mediante un pequeño código podrías recorrerlos y abrir una plantilla excel con la forma de presentación que te guste e ir cargandolos a través de código. nEs un proceso un poco lento en comparación de un guardar como de crystal report pero el trabajo de cara al cliente queda más elegante, cuando tenga que trabajar con ese excel.

    • Propuesto como respuesta CorsarioVasco miércoles, 7 de abril de 2010 18:04
    miércoles, 7 de abril de 2010 18:02
  • Hola DZUN

    Para usar excel desde vb.net debes usar los PIA (Primary Interop Assembly) de Office, en concreto el de excel, aquí tienes la web de msdn sobre uso de excel en vb.net:

    http://msdn.microsoft.com/es-es/library/wss56bz7(VS.80).aspx

    Para exportar a excel un crystal report directamente puedes usar este código:

    (debes añadir una referencia a CrystalDecisions.CrystalReports.Engine em tu proyecto)

        Dim rd As New CrystalDecisions.CrystalReports.Engine.ReportDocument
        rd.Load("c:\rutadelrpt\informe.rpt")
        rd.SetDataSource(DataSetDatosInformes)

        Dim oStrem As New System.IO.MemoryStream
        oStrem = CType(rd.ExportToStream(CrystalDecisions.Shared.ExportFormatType.Excel), System.IO.MemoryStream)

        'Si lo deseamos escribimos el excel a disco.
        Dim ArchivoXLS As New System.IO.FileStream("c:\po.xls", IO.FileMode.Create)
        ArchivoXLS.Write(oStrem.ToArray, 0, oStrem.ToArray.Length)
        ArchivoXLS.Flush()

    Un gran saludo!


    MCTS .NET Framework 3.5 Windows Forms Application Development
    Blog
    • Propuesto como respuesta Josue YerayMVP, Moderator miércoles, 7 de abril de 2010 18:11
    • Marcado como respuesta DZUN miércoles, 7 de abril de 2010 21:03
    miércoles, 7 de abril de 2010 18:11
    Moderador