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:
¿Sabéis donde puede estar el error o una forma más sencilla de hacerlo?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
Gracias