Foros del Web » Programación para mayores de 30 ;) » .NET »

problemas Excel ASP.NET

Estas en el tema de problemas Excel ASP.NET en el foro de .NET en Foros del Web. Hola a todos. Tengo una aplicación WEB que utiliza Excel para generar un archivo. Realmente lo que hago es abrir el Excel, escribir el archivo, ...
  #1 (permalink)  
Antiguo 06/04/2006, 02:54
 
Fecha de Ingreso: agosto-2003
Mensajes: 50
Antigüedad: 20 años, 8 meses
Puntos: 0
problemas Excel ASP.NET

Hola a todos.

Tengo una aplicación WEB que utiliza Excel para generar un archivo. Realmente lo que hago es abrir el Excel, escribir el archivo, guardarlo en el servidor y ponerle un enlace al usuario para que se pueda descargar el archivo.

Esta aplicación la tengo en varios ordenadores y no he tenido ningún problema salvo en uno de ellos. El problema lo tengo con un ordenador en la que tengo instalado el Excel 2000 SR-1. La aplicación consigue abrir el Excel y escribir, pero a la hora de guardar el archivo (excel.saveAs("ruta\archivo.xls")), me aparece un famosísimo "referencia de objeto no establecida como instancia a un objeto".

¿Alguien puede echarme una mano?

Nota: La aplicación la he desarrollado utilizando el Visual Studio 2000
  #2 (permalink)  
Antiguo 06/04/2006, 02:57
Avatar de javiermil  
Fecha de Ingreso: agosto-2004
Mensajes: 509
Antigüedad: 19 años, 8 meses
Puntos: 2
Pon el código. Saludos
  #3 (permalink)  
Antiguo 06/04/2006, 03:29
 
Fecha de Ingreso: agosto-2003
Mensajes: 50
Antigüedad: 20 años, 8 meses
Puntos: 0
Imports System.Data.SqlClient
Imports System.IO
Imports System.Text
Imports System.Runtime.InteropServices.Marshal

Public Class WebForm1
Inherits System.Web.UI.Page
Protected WithEvents Label1 As System.Web.UI.WebControls.Label
Protected WithEvents HyperLink1 As System.Web.UI.WebControls.HyperLink

#Region " Código generado por el Diseñador de Web Forms "

'El Diseñador de Web Forms requiere esta llamada.
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()

End Sub

Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
'CODEGEN: el Diseñador de Web Forms requiere esta llamada de método
'No lo modifique con el editor de código.
InitializeComponent()
End Sub

#End Region

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'Introducir aquí el código de usuario para inicializar la página
Dim fileExcel, filePath, fileName, strLine, sql As String
Dim nRandom As Random = New Random(DateTime.Now.Millisecond)
fileExcel = "t" + nRandom.Next().ToString() + ".xls"
Dim cnn As SqlConnection = New SqlConnection()
cnn.ConnectionString = "data source=127.0.0.1;..."
Dim exl As New Microsoft.Office.Interop.Excel.Application()
Dim wsheet As Microsoft.Office.Interop.Excel.Worksheet
wsheet = exl.Workbooks.Add.ActiveSheet
cnn.Open()
sql = "select * from excel order by fila,columna"
Dim cmd As SqlCommand = New SqlCommand(sql, cnn)
Dim dr As SqlDataReader

dr = cmd.ExecuteReader()

While dr.Read()
' codigo de la aplicación...
End While


filePath = Server.MapPath(".\")
exl.Workbooks.Item(1).SaveAs("c:\inetpub\wwwroot\" & fileExcel)

exl.Quit()
ReleaseComObject(exl)
ReleaseComObject(wsheet)
exl = Nothing
wsheet = Nothing
System.GC.Collect()

Label1.Text = UCase("El archivo ha sido generado satifactoriamente")
HyperLink1.Text = "Acceder"
HyperLink1.NavigateUrl = ".\..\" & fileExcel


dr.Close()
cnn.Close()
End Sub

End Class
  #4 (permalink)  
Antiguo 06/04/2006, 03:34
Avatar de javiermil  
Fecha de Ingreso: agosto-2004
Mensajes: 509
Antigüedad: 19 años, 8 meses
Puntos: 2
Hola, a simple vista

exl.Workbooks.Item(1).SaveAs("c:\inetpub\wwwroot\" & fileExcel)

el indice está mal, es item(0) . Saludos
  #5 (permalink)  
Antiguo 06/04/2006, 03:41
 
Fecha de Ingreso: agosto-2003
Mensajes: 50
Antigüedad: 20 años, 8 meses
Puntos: 0
Si le indico item(0) obtengo el siguiente error

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.Runtime.InteropServices.COMException: El índice no es válido.
  #6 (permalink)  
Antiguo 06/04/2006, 04:02
Avatar de javiermil  
Fecha de Ingreso: agosto-2004
Mensajes: 509
Antigüedad: 19 años, 8 meses
Puntos: 2
Esta linea seguro que es así wsheet = exl.Workbooks.Add.ActiveSheet?

Es que no tengo la dll y no puedo probarlo, pero me resulta rara, checkeala. Saludos
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.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:44.