none
Error en clase para exportar datos a un excel RRS feed

  • Pregunta

  • Hola,

    Me he creado una clase para exportar un datatable a un excel utilizando la libreria EPPLUS 4.1.0. Este es el código:

    Imports Microsoft.VisualBasic
    Imports System.IO
    Imports OfficeOpenXml
    Imports System.Data
    Imports OfficeOpenXml.Style
    Imports System.Drawing
    
    Public Class ExportToExcel
        Public Shared Sub FillData(ByVal dtbl As DataTable)
            Dim tmpDir As String = Path.GetTempPath()
            Dim newFileName As String = tmpDir + "Export" + DateTime.Now.ToString("yyyy-MM-dd-hh-mm-ss") + ".xlsx"
            Using newFile = New FileStream(newFileName, FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite)
                Using package As New ExcelPackage(newFile)
                    Dim ws As ExcelWorksheet = package.Workbook.Worksheets.Add("Sheet1")
                    ws.Cells("A1").LoadFromDataTable(dtbl, True)
                    Using range = ws.Cells(1, 1, 1, dtbl.Columns.Count)
                        range.Style.Font.Bold = True
                        range.Style.Fill.PatternType = ExcelFillStyle.Solid
                        range.Style.Fill.BackgroundColor.SetColor(Color.CornflowerBlue)
                        range.Style.Font.Color.SetColor(Color.WhiteSmoke)
                        range.Style.ShrinkToFit = True
                    End Using
                    package.Save()
                End Using
            End Using
            Dim FileInfo As New FileInfo(newFileName)
            If (FileInfo.Exists) Then
                Response.Clear()
                Response.AddHeader("Content-Disposition", "attachment; filename=" + FileInfo.Name)
                Response.AddHeader("Content-Length", FileInfo.Length.ToString())
                Response.ContentType = "application/octet-stream"
                Response.Flush()
                Response.TransmitFile(FileInfo.FullName)
                Response.End()
            End If
    
        End Sub
    
    End Class
    
    Tengo este error al descargar el fichero excel generado:

    Error    33    'Response' is not declared. It may be inaccessible due to its protection level. 

    ¿Alguien puede echarme una mano?

    Muchas gracias


    miércoles, 12 de julio de 2017 13:05

Respuestas

  • Hola,

    Finalmente lo he conseguido así:

    If (FileInfo.Exists) Then
                        System.Web.HttpContext.Current.Response.Clear()
                        System.Web.HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment; filename=" + FileInfo.Name)
                        package.SaveAs(System.Web.HttpContext.Current.Response.OutputStream)
                        System.Web.HttpContext.Current.Response.End()
                    End If
    Un Saludo

    • Editado Jsaizs jueves, 13 de julio de 2017 8:27 Informativo
    • Marcado como respuesta Jsaizs jueves, 13 de julio de 2017 8:27
    jueves, 13 de julio de 2017 8:25

Todas las respuestas

  • Hola,

    Finalmente lo he conseguido así:

    If (FileInfo.Exists) Then
                        System.Web.HttpContext.Current.Response.Clear()
                        System.Web.HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment; filename=" + FileInfo.Name)
                        package.SaveAs(System.Web.HttpContext.Current.Response.OutputStream)
                        System.Web.HttpContext.Current.Response.End()
                    End If
    Un Saludo

    • Editado Jsaizs jueves, 13 de julio de 2017 8:27 Informativo
    • Marcado como respuesta Jsaizs jueves, 13 de julio de 2017 8:27
    jueves, 13 de julio de 2017 8:25
  • Hola Jsaizs,

    Gracias por visitar los foros y compartir con nosotros tu solución.

    Saludos

    Joyce

    _________________________________________________________________________________________
    Por favor, recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, hace que sea más fácil para los otros visitantes encontrar la solución  más tarde. Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft. Este contenido es proporcionado "tal  cual" y no implica ninguna responsabilidad de parte de Microsoft.

    jueves, 13 de julio de 2017 14:05
    Moderador