Foros del Web » Programando para Internet » ASPX (.net) »

Exportar de DataTable a Excel

Estas en el tema de Exportar de DataTable a Excel en el foro de ASPX (.net) en Foros del Web. Saludos amigos. Tengo un código para exportar datos de un datatable a un Excel, y el caso es que me funciona bien en local, pero ...
  #1 (permalink)  
Antiguo 10/02/2010, 10:52
 
Fecha de Ingreso: junio-2007
Mensajes: 327
Antigüedad: 16 años, 10 meses
Puntos: 0
Exportar de DataTable a Excel

Saludos amigos.
Tengo un código para exportar datos de un datatable a un Excel, y el caso es que me funciona bien en local, pero no cuando cuelgo la aplicación. Al principio tuve los problemas de siempre con los permisos Com y demás, pero una vez solucionado, ya no me da ningún error, y parece que ejecuta, pero la aplicación excel no se muestra por pantalla. En local si, pero desde el servidor, es como que algo no va bien, y no llega a mostrar el excel por pantalla. Mis dos funciones son las siguientes:

Código:
Public Sub ExportarToExcelII(ByVal DT As DataTable)

        '/////////////////////////////
        '// Creamos el Objeto Excel
        '/////////////////////////////
        Dim m_Excel As New Microsoft.Office.Interop.Excel.Application()
        Dim objLibroExcel
        Dim objHojaExcel
        objLibroExcel = m_Excel.Workbooks.Add()
        objHojaExcel = objLibroExcel.Worksheets(1)
        objHojaExcel.Name = "Customers"
        objHojaExcel.Visible = Microsoft.Office.Interop.Excel.XlSheetVisibility.xlSheetVisible
        objHojaExcel.Activate()

        Try

            '/////////////////////////////////////////////////////////
            '// Definimos dos variables para controlar fila y columna
            '/////////////////////////////////////////////////////////
            Dim fila As Integer = 1
            Dim columna As Integer = 1

            If DT.Rows.Count > 0 Then

                '/////////////////////////////////////////////////
                '// Armamos la linea con los títulos de columnas
                '/////////////////////////////////////////////////
                objHojaExcel.Range("A1").Select()
                Dim Dc As DataColumn

                For Each Dc In DT.Columns
                    objHojaExcel.Range(nombreColumna(columna) & 1).Value = Dc.ColumnName
                    columna += 1
                Next
                fila += 1

                '/////////////////////////////////////////////
                '// Le damos formato a la fila de los títulos
                '/////////////////////////////////////////////
                Dim objRango As Microsoft.Office.Interop.Excel.Range = objHojaExcel.Range("A1:" & nombreColumna(DT.Columns.Count) & "1")
                objRango.Font.Bold = True
                objRango.Cells.Interior.ColorIndex = 35

                objRango.Cells.Borders(Microsoft.Office.Interop.Excel.XlBordersIndex.xlDiagonalDown).LineStyle = Microsoft.Office.Interop.Excel.XlLineStyle.xlLineStyleNone
                objRango.Cells.Borders(Microsoft.Office.Interop.Excel.XlBordersIndex.xlDiagonalUp).LineStyle = Microsoft.Office.Interop.Excel.XlLineStyle.xlLineStyleNone
                objRango.Cells.Borders(Microsoft.Office.Interop.Excel.XlBordersIndex.xlEdgeLeft).LineStyle = Microsoft.Office.Interop.Excel.XlLineStyle.xlLineStyleNone
                objRango.Cells.Borders(Microsoft.Office.Interop.Excel.XlBordersIndex.xlEdgeRight).LineStyle = Microsoft.Office.Interop.Excel.XlLineStyle.xlContinuous
                objRango.Cells.Borders(Microsoft.Office.Interop.Excel.XlBordersIndex.xlEdgeTop).LineStyle = Microsoft.Office.Interop.Excel.XlLineStyle.xlContinuous
                objRango.Cells.Borders(Microsoft.Office.Interop.Excel.XlBordersIndex.xlEdgeBottom).LineStyle = Microsoft.Office.Interop.Excel.XlLineStyle.xlContinuous

                '//////////////////////////////////////////
                '// Cargamos todas las filas del datatable
                '//////////////////////////////////////////
                'ProgressBar1.Maximum = ds.Tables(0).Rows.Count
                columna = 1
                ' ProgressBar1.Value = 0
                Dim dr As DataRow
                For Each dr In DT.Rows
                    columna = 1
                    For Each Dc In DT.Columns
                        objHojaExcel.Range(nombreColumna(columna) & fila).Value = dr(Dc.ColumnName)
                        columna += 1
                    Next
                    fila += 1
                    'ProgressBar1.Value += 1
                Next

                '//////////////////////////////////////
                '// Ajustamos automaticamente el ancho
                '// de todas las columnas utilizada
                '//////////////////////////////////////
                objRango = objHojaExcel.Range("A1:" & nombreColumna(DT.Columns.Count) & DT.Rows.Count.ToString)
                objRango.Select()
                objRango.Columns.AutoFit()

            End If

            

            '/////////////////////////////////////
            '// Le decimos a Excel que se muestre
            '/////////////////////////////////////
            'MsgBox("Exportación a Excel completa", MsgBoxStyle.Information, "BBVA")
            m_Excel.Visible = True




        Catch ex As Exception
            m_Excel.Quit()
            m_Excel = Nothing
            objLibroExcel = Nothing
            objHojaExcel = Nothing
            Throw ex
        End Try

Código:
Public Function nombreColumna(ByVal numero As Integer) As String
        Dim columna(256) As String

        columna(1) = "A"
        columna(2) = "B"
        columna(3) = "C"
        columna(4) = "D"
        columna(5) = "E"
        columna(6) = "F"
        columna(7) = "G"
        columna(8) = "H"
        columna(9) = "I"
        columna(10) = "J"
        columna(11) = "K"
        columna(12) = "L"
        columna(13) = "M"
        columna(14) = "N"
        columna(15) = "O"
        columna(16) = "P"
        columna(17) = "Q"
        columna(18) = "R"
        columna(19) = "S"
        columna(20) = "T"
        columna(21) = "U"
        columna(22) = "V"
        columna(23) = "W"
        columna(24) = "X"
        columna(25) = "Y"
        columna(26) = "Z"
        columna(27) = "AA"
        columna(28) = "AB"
        ET... ETC (Lo acorto)

        Return columna(numero)
    End Function
¿Sabéis donde puede estar el error o una forma más sencilla de hacerlo?

Gracias

Última edición por Javichechu; 11/02/2010 a las 02:58
  #2 (permalink)  
Antiguo 11/02/2010, 02:57
 
Fecha de Ingreso: junio-2007
Mensajes: 327
Antigüedad: 16 años, 10 meses
Puntos: 0
Exclamación Respuesta: Exportar de DataTable a Excel

Por favor, necesito algo de ayuda, y es urgente. Si alguien sabe algo, que lo diga ahora o que calle para siempre...
  #3 (permalink)  
Antiguo 11/02/2010, 03:19
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 16 años, 3 meses
Puntos: 606
Respuesta: Exportar de DataTable a Excel

Cita:
Iniciado por Javichechu Ver Mensaje
Por favor, necesito algo de ayuda, y es urgente. Si alguien sabe algo, que lo diga ahora o que calle para siempre...
Sé que tendrás prisas pero tampoco creo que sea plan de ir exigiendo una respuesta y tampoco de ir repitiendo el hilo por el foro:

http://www.forosdelweb.com/f78/expor...-excel-777258/
__________________
Aviso: No se resuelven dudas por MP!
  #4 (permalink)  
Antiguo 11/02/2010, 04:17
 
Fecha de Ingreso: junio-2007
Mensajes: 327
Antigüedad: 16 años, 10 meses
Puntos: 0
Respuesta: Exportar de DataTable a Excel

Ni exijo nada, ni hago nada indebido. Mucho peor me parece tu actutid recriminando la mía por pedir ayuda. Se te da bien criticar, pero no muy bien ayudar.

Al resto, solo puedo seguir pidiéndoles ayuda. Seguro que este foro está lleno de gente muy distinta a este tipo.

Etiquetas: datatable, excel, aspx
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 23:41.