none
System.NullReferenceException: Referencia a objeto no establecida como instancia de un objeto. RRS feed

  • Pregunta

  • Buenas Tardes compañeros tengo el siguiente error, agradezco la colaboración.

    Referencia a objeto no establecida como instancia de un objeto.

    Descripción: Excepción no controlada al ejecutar la solicitud Web actual. Revise el seguimiento de la pila para obtener más información acerca del error y dónde se originó en el código.

    Detalles de la excepción: System.NullReferenceException: Referencia a objeto no establecida como instancia de un objeto.

    Error de código fuente:

    Línea 305:            Throw exp
    Línea 306:        Finally
    Línea 307:            ex.Quit()
    Línea 308:        End Try
    Línea 309:    End Function

    Archivo de origen: C:\NPES\ReportesModificados\ServicioPruebas\SalomeReporteEjecucionDetallado.aspx.vb    Línea: 307

    Seguimiento de la pila:
    [NullReferenceException: Referencia a objeto no establecida como instancia de un objeto.]
       Prueba2.InsertExcel(DataSet dsDataProject) in C:\NPES\ReportesModificados\ServicioPruebas\SalomeReporteEjecucionDetallado.aspx.vb:307
       Prueba2.Page_Load(Object sender, EventArgs e) in C:\NPES\ReportesModificados\ServicioPruebas\SalomeReporteEjecucionDetallado.aspx.vb:13
       System.Web.UI.Control.OnLoad(EventArgs e) +131
       System.Web.UI.Control.LoadRecursive() +65
       System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +2427
    


    Información de versión: Versión de Microsoft .NET Framework:2.0.50727.5466; Versión ASP.NET:2.0.50727.5491 

    y este es el codigo

    Imports System.Data
    Imports System.Text
    Imports System.IO
    Imports Microsoft.Office.Interop

    Partial Class Prueba2
        Inherits System.Web.UI.Page
        Dim StrRutaReportes As String = System.Configuration.ConfigurationSettings.AppSettings("StrRutaReportes")
        Private Conexion As New ConexionBD()

        Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
            If Not IsPostBack Then
                InsertExcel(GetDataCampagne(GetIdProject(Request.QueryString("strProject"))))
            End If
        End Sub


        ''' <summary>
        ''' Funcion que recibe sentencia sql y retorna un dataset.
        ''' </summary>
        ''' <param name="sSQL"></param>
        ''' <returns>Dataset con la informacion devuelta por la base de datos.</returns>
        ''' <remarks></remarks>
        ''' <autor>Lbernal 01/05/2009</autor>
        Public Function GetIdProject(ByVal strProject As String) As Integer
            Dim sSQL As String

            'Obtener nombre y id del proyecto.
            sSQL = "SELECT id_projet FROM PROJET_VOICE_TESTING where "
            sSQL &= "nom_projet= '" & strProject & "'"

            Return Integer.Parse(Conexion.metTraerDatos(sSQL, "salome").Tables("Table").Rows(0)("id_projet"))

        End Function


        ''' <summary>
        ''' Funcion que recibe sentencia sql y retorna un dataset.
        ''' </summary>
        ''' <param name="sSQL"></param>
        ''' <returns>Dataset con la informacion devuelta por la base de datos.</returns>
        ''' <remarks></remarks>
        ''' <autor>Lbernal 01/05/2009</autor>
        Public Function GetData(ByVal sSQL As String) As DataSet

            Return Conexion.metTraerDatos(sSQL, "salome")

        End Function

        ''' <summary>
        ''' Funcion que recibe Id del proyecto y retorna cas test de la campagne.
        ''' </summary>
        ''' <param name="idProject"></param>
        ''' <returns>Dataset con la informacion devuelta por la base de datos.</returns>
        ''' <remarks></remarks>
        ''' <autor>Lbernal 01/05/2009</autor>
        Public Function GetDataCampagne(ByVal idProject As Integer) As DataSet

            Dim sSQL As New System.Text.StringBuilder
            sSQL.Append("SELECT ")
            sSQL.Append("        projet_voice_testing.nom_projet ")
            sSQL.Append("        ,famille_test.id_famille ")
            sSQL.Append("        , famille_test.nom_famille ")
            sSQL.Append("        , suite_test.id_suite ")
            sSQL.Append("        , suite_test.nom_suite ")
            sSQL.Append("        , campagne_test.id_camp ")
            sSQL.Append("        , campagne_test.nom_camp ")
            sSQL.Append("        , cas_test.id_cas ")
            sSQL.Append("        , cas_test.nom_cas ")
            sSQL.Append("        , action_test.nom_action ")
            sSQL.Append("        , action_test.description_action ")
            sSQL.Append("        , action_test.res_attendu_action ")
            sSQL.Append("        , CASE ea.res_exec_action  ")
            sSQL.Append("           WHEN '' THEN '' ")
            sSQL.Append("           WHEN 'FAILED' THEN 'FALLIDO' ")
            sSQL.Append("           WHEN 'INCONCLUSIF' THEN 'INCONCLUSO' ")
            sSQL.Append("           WHEN 'PASSED' THEN 'CORRECTO' ")
            sSQL.Append("           ELSE '' END res_exec_action ")
            sSQL.Append("        , rec.nom_res_exec_camp ")
            sSQL.Append("        , CASE rec.resultat_res_exec_camp ")
            sSQL.Append("         WHEN 'INCOMPLETE' THEN 'INCOMPLETO' ")
            sSQL.Append("         WHEN 'TERMINEE' THEN 'TERMINADO' ")
            sSQL.Append("         ELSE '' END resultat_res_exec_camp ")
            sSQL.Append("        FROM ")
            sSQL.Append("        .campagne_test ")
            sSQL.Append("        , .cas_test ")
            sSQL.Append("        , .campagne_cas ")
            sSQL.Append("        , .action_test ")
            sSQL.Append("        , .famille_test ")
            sSQL.Append("        , .suite_test ")
            sSQL.Append("        , .projet_voice_testing ")
            sSQL.Append("        , .exec_action ea ")
            sSQL.Append("        , exec_cas ec ")
            sSQL.Append("        , res_exec_camp rec ")
            sSQL.Append("        WHERE campagne_cas.CAMPAGNE_TEST_id_camp = id_camp ")
            sSQL.Append("        AND campagne_cas.CAS_TEST_id_cas = id_cas ")
            sSQL.Append("        AND campagne_test.PROJET_VOICE_TESTING_id_projet = famille_test.PROJET_VOICE_TESTING_id_projet ")
            sSQL.Append("        AND action_test.CAS_TEST_id_cas = id_cas ")
            sSQL.Append("        AND famille_test.PROJET_VOICE_TESTING_id_projet = projet_voice_testing.id_projet ")
            sSQL.Append("        AND suite_test.FAMILLE_TEST_id_famille = famille_test.id_famille ")
            sSQL.Append("        AND cas_test.SUITE_TEST_id_suite = suite_test.id_suite ")
            sSQL.Append("        AND projet_voice_testing.id_projet =  " & idProject)
            sSQL.Append(" AND ea.ACTION_TEST_id_action = action_test.id_action        ")
            sSQL.Append(" AND ea.EXEC_CAS_id_exec_cas= ec.id_exec_cas ")
            sSQL.Append(" AND ec.RES_EXEC_CAMP_id_res_exec_camp = rec.id_res_exec_camp ")
            sSQL.Append("ORDER BY famille_test.ordre_famille ASC, campagne_test.ordre_camp ASC, suite_test.ordre_suite ASC, ")
            sSQL.Append("cas_test.ordre_cas ASC, action_test.num_step_action ASC;")


            Return GetData(sSQL.ToString)

        End Function

        ''' <summary>
        ''' Funcion que recibe Id del proyecto y retorna cas test de la campagne.
        ''' </summary>
        ''' <param name="dsDataProject"></param>
        ''' <returns>Dataset con la informacion devuelta por la base de datos.</returns>
        ''' <remarks></remarks>
        ''' <autor>Lbernal 01/05/2009</autor>
        Public Function InsertExcel(ByVal dsDataProject As DataSet) As Boolean

            Dim drFila As DataRow
            Dim iFilaR As Integer = 0
            Dim idCampagne As Integer = -1
            Dim iHoja As Integer = 1
            Dim iFilaCP As Integer = 1
            Dim strFile As String
            Dim strRuta As String

            '' Crea e inicia una instancia a Excel
            Dim ex As Excel.Application
            Dim objLibroExcel As Excel.Workbook
            '' Crea un objeto WorkBook 
            Try

                ex = New Excel.Application
                '' Crea un objeto WorkSheet
                Dim objHojaExcelResumen As Excel.Worksheet
                Dim objHojaExcelCaso As Excel.Worksheet

                '' Crea un objeto Celda
                Dim objCelda As Excel.Range

                'strRuta = Server.MapPath("plantilla/Excel.xls")
                strRuta = StrRutaReportes & "Excel.xls"
                ''strFile = "plantilla/Excel.xls"
                strFile = StrRutaReportes & "Excel.xls"
                ex.Visible = True
                ex.DisplayAlerts = False

                '' Crea una instancia del Workbooks de Excel
                '' Crea una instancia de la primera hoja de trabajo de Excel
                objLibroExcel = ex.Workbooks.Add()
                objHojaExcelResumen = objLibroExcel.Worksheets(1)

                'objLibroExcel.Worksheets.Item(2).Delete()
                'objLibroExcel.Worksheets.Item(2).Delete()

                objHojaExcelResumen.Name = "Resumen"

                Int(iFilaR = 0)
                For Each drFila In dsDataProject.Tables(0).Rows
                    If iFilaR = 0 Then

                        '' Crear el encabezado
                        objHojaExcelResumen.Range("A1:D1").Merge()
                        objHojaExcelResumen.Range("A1:D1").Font.Name = "Arial"
                        objHojaExcelResumen.Range("A1:D1").Font.Bold = True
                        objHojaExcelResumen.Range("A1:D1").Font.Size = 15
                        objHojaExcelResumen.Range("A1:D1").Value = drFila("nom_projet")

                        '' Crear el subencabezado
                        objHojaExcelResumen.Range("A2:D2").Font.Name = "Arial"
                        objHojaExcelResumen.Range("A2:D2").Font.Bold = True
                        objHojaExcelResumen.Range("A2:D2").Font.Italic = True
                        objHojaExcelResumen.Range("A2:D2").Font.Size = 13

                        objCelda = objHojaExcelResumen.Range("A2", Type.Missing)
                        objCelda.Value = "Familia"

                        objCelda = objHojaExcelResumen.Range("B2", Type.Missing)
                        objCelda.Value = "Suite"

                        objCelda = objHojaExcelResumen.Range("C2", Type.Missing)
                        objCelda.Value = "Escenario"

                        objCelda = objHojaExcelResumen.Range("D2", Type.Missing)
                        objCelda.Value = "Caso Prueba"

                        iFilaR = 3

                    End If

                    If idCampagne = Integer.Parse(drFila.Item("id_cas")) Then

                        '' Asignar los valores de los registros a las celdas
                        objHojaExcelCaso.Cells(iFilaCP, "A") = drFila.Item("nom_action") 'Nombre'
                        objHojaExcelCaso.Cells(iFilaCP, "B") = drFila.Item("description_action") 'Descripcion'
                        objHojaExcelCaso.Cells(iFilaCP, "C") = drFila.Item("res_attendu_action") 'R. Esperado'
                        objHojaExcelCaso.Cells(iFilaCP, "D") = drFila.Item("res_exec_action") 'R. Ejeución'
                        objHojaExcelCaso.Cells(iFilaCP, "E") = drFila.Item("nom_res_exec_camp") 'Ejección Campaña'
                        objHojaExcelCaso.Cells(iFilaCP, "F") = drFila.Item("resultat_res_exec_camp") 'R.Campaña'
                        'objHojaExcelCaso.Cells(iFilaCP, "D") = drFila.Item(8) 'Caso Prueba'
                        iFilaCP = iFilaCP + 1

                    Else

                        objHojaExcelResumen.Cells(iFilaR, "A") = drFila.Item("nom_famille") 'Familia'
                        objHojaExcelResumen.Cells(iFilaR, "B") = drFila.Item("nom_suite") 'Suite'
                        objHojaExcelResumen.Cells(iFilaR, "C") = drFila.Item("nom_camp") 'Escenario'
                        objHojaExcelResumen.Cells(iFilaR, "D") = drFila.Item("nom_cas") 'Caso Prueba'

                        If iHoja = 1 Then
                            objHojaExcelCaso = objLibroExcel.Sheets.Add(, objHojaExcelResumen, )
                        Else
                            objHojaExcelCaso.ListObjects.AddEx(Excel.XlListObjectSourceType.xlSrcRange, objHojaExcelCaso.Range("$A$2:$F$" & iFilaCP - 1), _
                                 , Excel.XlYesNoGuess.xlYes).Name = "tCaso" & iHoja
                            objHojaExcelCaso.Columns("A:A").EntireColumn.AutoFit()
                            objHojaExcelCaso.Columns("B:B").EntireColumn.AutoFit()
                            objHojaExcelCaso.Columns("C:C").EntireColumn.AutoFit()
                            objHojaExcelCaso.Columns("D:D").EntireColumn.AutoFit()
                            objHojaExcelCaso.Columns("E:E").EntireColumn.AutoFit()
                            objHojaExcelCaso.Columns("F:F").EntireColumn.AutoFit()
                            objHojaExcelCaso.Rows.AutoFit()
                            objHojaExcelCaso = objLibroExcel.Sheets.Add(, objHojaExcelCaso, )
                        End If

                        'objHojaExcelCaso.Visible = Excel.XlSheetVisibility.xlSheetVisible
                        objHojaExcelCaso.Name = "Caso" & iHoja
                        objHojaExcelResumen.Hyperlinks.Add(objHojaExcelResumen.Range("D" & iFilaR), "", objHojaExcelCaso.Name & "!A1", , drFila.Item(8))


                        objHojaExcelCaso.Hyperlinks.Add(objHojaExcelCaso.Range("A1"), "", objHojaExcelResumen.Name & "!F" & iFilaR, , "")
                        objHojaExcelCaso.Range("A1:F1").Merge()
                        objHojaExcelCaso.Range("A1:F1").Font.Name = "Arial"
                        objHojaExcelCaso.Range("A1:F1").Font.Bold = True
                        objHojaExcelCaso.Range("A1:F1").Font.Size = 14
                        objHojaExcelCaso.Range("A1:F1").Font.TintAndShade = 0
                        objHojaExcelCaso.Range("A1:F1").Font.ColorIndex = 0
                        objHojaExcelCaso.Range("A1:F1").Value = drFila("nom_cas")

                        '' Crear el subencabezado
                        objHojaExcelCaso.Range("A2:F2").Font.Name = "Arial"
                        objHojaExcelCaso.Range("A2:F2").Font.Bold = True
                        objHojaExcelCaso.Range("A2:F2").Font.Italic = True
                        objHojaExcelCaso.Range("A2:F2").Font.Size = 12

                        objCelda = objHojaExcelCaso.Range("A2", Type.Missing)
                        objCelda.Value = "Nombre"
                        objCelda = objHojaExcelCaso.Range("B2", Type.Missing)
                        objCelda.Value = "Descripción"
                        objCelda = objHojaExcelCaso.Range("C2", Type.Missing)
                        objCelda.Value = "Resultado Esp"
                        objCelda = objHojaExcelCaso.Range("D2", Type.Missing)
                        objCelda.Value = "Resultado Ejecución"
                        objCelda = objHojaExcelCaso.Range("E2", Type.Missing)
                        objCelda.Value = "Ejecución de Campaña"
                        objCelda = objHojaExcelCaso.Range("F2", Type.Missing)
                        objCelda.Value = "Estado de Ejeución de Campaña"
                        iFilaCP = 3
                        objHojaExcelCaso.Cells(iFilaCP, "A") = drFila.Item("nom_action") 'Nombre'
                        objHojaExcelCaso.Cells(iFilaCP, "B") = drFila.Item("description_action") 'Descripcion'
                        objHojaExcelCaso.Cells(iFilaCP, "C") = drFila.Item("res_attendu_action") 'R. Esperado'
                        objHojaExcelCaso.Cells(iFilaCP, "D") = drFila.Item("res_exec_action") 'R. Esperado'
                        objHojaExcelCaso.Cells(iFilaCP, "E") = drFila.Item("nom_res_exec_camp") 'R. Esperado'
                        objHojaExcelCaso.Cells(iFilaCP, "F") = drFila.Item("resultat_res_exec_camp") 'R. Esperado'
                        'objHojaExcelCaso.Cells(iFilaCP, "D") = drFila.Item(8) 'Caso Prueba'
                        idCampagne = Integer.Parse(drFila.Item("id_cas"))
                        iFilaR = iFilaR + 1
                        iHoja = iHoja + 1
                        iFilaCP = 4
                    End If
                Next

                objHojaExcelResumen.ListObjects.AddEx(Excel.XlListObjectSourceType.xlSrcRange, objHojaExcelResumen.Range("$A$2:$D$" & iFilaR - 1), _
                     , Excel.XlYesNoGuess.xlYes).Name = "tResumen"
                objHojaExcelCaso.ListObjects.AddEx(Excel.XlListObjectSourceType.xlSrcRange, objHojaExcelCaso.Range("$A$2:$F$" & iFilaCP - 1), _
                     , Excel.XlYesNoGuess.xlYes).Name = "tCaso" & iHoja

                objHojaExcelCaso.Columns("A:A").EntireColumn.AutoFit()
                objHojaExcelCaso.Columns("B:B").EntireColumn.AutoFit()
                objHojaExcelCaso.Columns("C:C").EntireColumn.AutoFit()
                objHojaExcelCaso.Columns("D:D").EntireColumn.AutoFit()
                objHojaExcelCaso.Columns("E:E").EntireColumn.AutoFit()
                objHojaExcelCaso.Columns("F:F").EntireColumn.AutoFit()
                objHojaExcelCaso.Rows.AutoFit()

                objHojaExcelResumen.Columns("A:A").EntireColumn.AutoFit()
                objHojaExcelResumen.Columns("B:B").EntireColumn.AutoFit()
                objHojaExcelResumen.Columns("C:C").EntireColumn.AutoFit()
                objHojaExcelResumen.Columns("D:D").EntireColumn.AutoFit()
                objHojaExcelResumen.Rows.AutoFit()
                objHojaExcelResumen.Activate()

                ' Save created sheets as a file 
                objLibroExcel.SaveAs(strRuta)
                ' Make sure all objects are disposed
                objLibroExcel.Close()
                ex.Quit()
                Response.Redirect("descarga.aspx?file=" & strFile)

            Catch exp As Exception
                Response.Write(exp.Message)
                Throw exp
            Finally
                ex.Quit()
            End Try
        End Function
    End Class

    Gracias

    viernes, 20 de noviembre de 2015 15:40

Respuestas

  • Revisa 

    http://geeks.ms/blogs/lruiz/archive/2007/03/15/como-utilizar-com-interop-office-excel-en-tus-proyectos-asp-net-y-no-morir-en-el-intento.aspx


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    lunes, 23 de noviembre de 2015 16:27
    Moderador

Todas las respuestas

  • parece ser que el codigo no esta pudiendo acceder a la referencia del excel application

    es mas si dentro del try dealizas el Quit() entonces para que vuelves hacerlo en el Finally ?

    estas haciendo el quit aqui

    objLibroExcel.Close()
    ex.Quit()
    Response.Redirect("descarga.aspx?file=" & strFile)

    para que en el Finally

    ---

    o sino deja solo en el finally y quitalo del cuerpo del try

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    viernes, 20 de noviembre de 2015 15:51
  • Hola Leandro 

    hice el comentario de la linea de la siguiente forma 

                objLibroExcel.Close()
                'ex.Quit()
                Response.Redirect("descarga.aspx?file=" & strFile)
              Catch exp As Exception
                Response.Write(exp.Message)
                Throw exp
              Finally
              ex.Quit()
            End Try

    Pero sigue saliendo el error

    Error de servidor en la aplicación '/'.

    Referencia a objeto no establecida como instancia de un objeto.

    Descripción: Excepción no controlada al ejecutar la solicitud Web actual. Revise el seguimiento de la pila para obtener más información acerca del error y dónde se originó en el código.

    Detalles de la excepción: System.NullReferenceException: Referencia a objeto no establecida como instancia de un objeto.

    Error de código fuente:
    Línea 305:            Throw exp
    Línea 306:          Finally
    Línea 307:          ex.Quit()
    Línea 308:        End Try
    Línea 309:    End Function

    Archivo de origen: C:\NPES\ReportesModificados\ServicioPruebas\SalomeReporteEjecucionDetallado.aspx.vb    Línea: 307

    viernes, 20 de noviembre de 2015 16:29
  • esto sucede cuando ejecutas desde el VS ?

    si es asi porque no defines un breakpoint y vas paso a paso en el codigo para ver como se comporta la variable y en que momento queda null

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    viernes, 20 de noviembre de 2015 16:58
  • lo estoy ejecutando desde internet information service (iis), estoy descargando el visual para validar el error, es que este es un proyecto que herede en una clases, funciona a la perfección en otro pc, pero en el mio no.
    viernes, 20 de noviembre de 2015 17:23
  • Dices que en tu equipo NO funciona verdad? Tao vez te falte instalar algún componente que sí está instalado en el equipo que funciona. Tal vez la versión de excel? Saludos

    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    domingo, 22 de noviembre de 2015 13:26
    Moderador
  • todos lo componentes estan instalados, todo esta igual ahora me sale el siguiente error.

    Línea 142:        Else
    Línea 143:            '' Crea e inicia una instancia a Excel
    Línea 144:            Dim ex As New Excel.Application
    Línea 145:
    Línea 146:            '' Crea un objeto WorkBook 

    Error al recuperar un generador de clases COM para el componente con CLSID {00024500

    Gracias

    lunes, 23 de noviembre de 2015 16:02
  • Revisa 

    http://geeks.ms/blogs/lruiz/archive/2007/03/15/como-utilizar-com-interop-office-excel-en-tus-proyectos-asp-net-y-no-morir-en-el-intento.aspx


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    lunes, 23 de noviembre de 2015 16:27
    Moderador
  • ya revise este tema y tiene los permisos
    martes, 24 de noviembre de 2015 20:15
  • Qué versión de Office es la que está haciendo referencia el proyecto? Tienes instalada la misma?

    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    miércoles, 25 de noviembre de 2015 8:12
    Moderador