none
Aplicacion se cae cuando la hoja de excel esta abierta. RRS feed

  • Pregunta

  •  

    Hola a todos

    Tengo una aplicacion en VB.net ,donde tengo una tabla datagridview con data como muestro en la imagen de abajo, al momento de darle click en el botón exportar me sale un mensaje de éxito donde indica que los datos se exportaron a una hoja excel, luego voy a  la ruta donde se encuentra la hoja excel y la abro, hasta ahí todo normal. El problema sucede cuando la hoja excel esta abierta y nuevamente le doy un click en el botón exportar, en ese momento el programa se cae, les dejo el codigo de como exporto la tabla a la hoja excel. Ayúdenme por favor.

    Private Sub CreateExcelFile()
            'Creamos un objeto SqlDocument
            Dim sl As New SLDocument()

            'Asignamos un ancho a las columnas
            sl.SetColumnWidth(2, 13)
            sl.SetColumnWidth(3, 32)
            sl.SetColumnWidth(4, 15)


            'Asignamos un nombre a la pestaña de la hoja de calculo
            sl.RenameWorksheet(SLDocument.DefaultFirstSheetName, "Reporte")

            'usamos la función SetCellValue para poblar la celda
            'sl.SetCellValue(indicedefila, indicedecolumna, "valor a establecer");

            sl.SetCellValue(7, 2, "CODIGO")
            sl.SetCellValue(7, 3, "DESCRIPCIÓN")
            sl.SetCellValue(7, 4, "MONTO")


            'Definimos un estilo a la columna
            Dim style1 As SLStyle = sl.CreateStyle()
            style1.Font.Bold = True
            sl.SetCellStyle(7, 2, style1)
            sl.SetCellStyle(7, 3, style1)
            sl.SetCellStyle(7, 4, style1)


            Dim style2 As SLStyle = sl.CreateStyle()
            style2.Font.Bold = True
            style2.SetFont("Times New Roman", 18)
            style2.Font.Underline = True

            sl.SetCellStyle(4, 4, style1)
            sl.SetCellValue(4, 4, "REPORTE PRESUPUESTO MENSUAL" & " " & "-" & " " & dato.nom_adm)
            sl.SetCellStyle(5, 5, style1)
            sl.SetCellValue(5, 5, "                            MES:" & " " & dato.mes)


            'definimos el indice de la fila donde comenzaremos a vaciar los datos del DataGridView
            Dim rowIndex As Integer = 8
            '
            'definimos el indice de la columna donde comenzaremos a vaciar los datos
            Dim columnIndex As Integer = 2
            '
            'Recorremos las filas del control
            For Each row As DataGridViewRow In DataGridView1.Rows
                'Recorremos la lista de columnas del control
                For i As Integer = 0 To DataGridView1.Columns.Count - 1
                    'comenzamos a enviar los valores al objeto SLDocument, usando el valor de la fila y columna
                    sl.SetCellValue(rowIndex, columnIndex, Convert.ToString(row.Cells(i).Value))
                    columnIndex += 1
                Next
                rowIndex += 1
                columnIndex = 2
            Next

            'Guardamos el documento
            'como no definimos ningun directorio el archivo se creara automaticamente en la carpeta bin/debug
            'sl.SaveAs("C:\pruebas_FondoFijoMensual\Reporte_ppto_mensual.xlsx")

            sl.SaveAs("C:\FONDO_FIJO\Admon.xlsx")
            MessageBox.Show("Se Exporto al formato Excel", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information)

        End Sub

    nota: le hice Debug al aplicativo justo en esa linea que esta resalta en negrita sl.SaveAs("C:\FONDO_FIJO\Admon.xlsx") es donde se cae, les vuelvo a resaltar que el programa se cae solo si la hoja de excel esta abierta, de encontrarse cerrada la hoja funciona normal el aplicativo y puedo dar miles de click en el boton exportar y la aplicacion funciona correctamente.

           

    guillermo leon rea

    viernes, 6 de noviembre de 2015 20:10

Respuestas

  • Hola:

     Antes que otra cosa si esta pregunta ya fue resuelta podrias por favor cerrarla marcando la respuesta como tal, o de lo contrario indicar cuales fueron tus avances:

    https://social.msdn.microsoft.com/Forums/es-ES/a6da944c-7501-420d-8d33-a5f17bc1ae59/error-al-llamar-una-hoja-excel-y-mostrarlo-en-el-datagridview?forum=vbes

     Por otra parte, si tienes el Excel con nombre Admon.Xlsx abierto como esperas sobreescribir el archivo cuando esta siendo usado por un proceso, de igual manera tu codigo debe de estar encerrado en un bloque Try Catch para atrapar el error que esta generando que tu aplicación se cierre (que como dije, es porque el archivo esta siendo utilizado por otro proceso).

     Para evitar este problema debes de guardar el libro con un nombre diferente de esta manera no fallara aunque tengas la base abierta, ya que crearas un nuevo archivo...


    Saludos desde Monterrey, Nuevo León, México!!!

    • Marcado como respuesta guille30 viernes, 6 de noviembre de 2015 22:44
    viernes, 6 de noviembre de 2015 22:26