Admin posted on September 23, 2008 11:09

Uma rotina bem simples para forçar o download de arquivos em Asp.Net, evitando que eles sejam abertos no browser. Por exemplo, se você quiser forçar que o usuário baixe um arquivo de imagem ao invés de abrir no browser, esta função será útil.

   1:  ''' <summary>
   2:      ''' Rotina para forçar o download de arquivos
   3:      ''' </summary>
   4:      ''' <param name="caminhoArquivo">Caminho para o arquivo no sistema de arquivos</param>
   5:      ''' <param name="contentType">Content-Type do arquivo (opcional)</param>
   6:      Protected Sub ForceDownload(ByVal caminhoArquivo As String, _
   7:                                  Optional ByVal contentType As String = "application/octet-stream")
   8:          Dim arquivo As FileInfo = New FileInfo(caminhoArquivo)
   9:          Response.Clear()
  10:          Response.AddHeader("Content-Disposition", "attachment; filename=" + arquivo.Name)
  11:          Response.AddHeader("Content-Length", arquivo.Length.ToString())
  12:          Response.ContentType = contentType
  13:          Response.WriteFile(arquivo.FullName)
  14:          Response.End()
  15:      End Sub

 


Posted in: .Net , ASP.Net , VB.Net  Tags: , ,
Vamos abordar um assunto de muita utilidade para quem trabalha com desenvolvimento de sistemas, a geração de arquivos em Excel (.xls). Neste post vamos analisar a geração de arquivos .xls em ambiente web usando o GridView, uma forma prática e rápida de gerar relatórios simples. O método gerador recebe um DataTable com informações vindas de um banco de dados. Segue o código da classe geradora:

   1:  Imports System.IO
   2:  Imports System.Drawing
   3:  Imports System.Data
   4:  Imports System.Web
   5:  Imports System.Web.UI
   6:  Imports System.Web.UI.WebControls
   7:   
   8:  '''-----------------------------------------------------------------------------
   9:  '''
  10:  ''' Classe para geração de relatórios Excel. Utiliza o componente
  11:  ''' System.Web.UI.WebControls.GridView para geração do arquivo .xls.
  12:  '''
  13:  '''
  14:  ''' 
  15:  Public Class ExcelReport
  16:      '''
  17:      ''' Nome do arquivo Excel
  18:      '''
  19:      '''
  20:      Private _file As String
  21:   
  22:      '''
  23:      ''' Objeto GridView
  24:      '''
  25:      '''
  26:      Private gv As GridView
  27:   
  28:      '''
  29:      ''' Construtor, recebe o nome do arquivo .xls como parâmetro
  30:      '''
  31:      ''' String contendo o nome do arquivo .xls a ser gerado.
  32:      '''
  33:      Public Sub New(ByVal file As String)
  34:          Me._file = file
  35:          ' Cria o GridView
  36:          gv = New GridView()
  37:          ' Formatação do GridView para que a planilha fique "zebrada"
  38:          gv.HeaderStyle.ForeColor = Color.Black
  39:          gv.AlternatingRowStyle.BackColor = Color.Yellow
  40:          gv.RowStyle.BackColor = Color.White
  41:      End Sub
  42:   
  43:      '''
  44:      ''' Gera um arquivo Excel a partir de um DataTable.
  45:      '''
  46:      ''' Instância do objeto DataTable
  47:      '''
  48:      Public Sub DataTableToExcel(ByRef dt As DataTable)
  49:          If dt.Rows.Count < 65536 Then
  50:              Dim response As HttpResponse = HttpContext.Current.Response
  51:              response.Clear()
  52:              response.AddHeader("Content-Disposition", "attachment; filename=" + Me._file)
  53:              response.ContentType = "application/vnd.ms-excel"
  54:              Dim stringWrite As New StringWriter
  55:              Dim htmlWrite As New HtmlTextWriter(stringWrite)
  56:              gv.DataSource = dt
  57:   
  58:              gv.DataBind()
  59:              gv.RenderControl(htmlWrite)
  60:              response.Write(stringWrite.ToString)
  61:              response.End()
  62:          Else
  63:              ' se tiver mais que 65536 linhas, dispara a exception
  64:              Throw New Exception("Consulta deve conter menos que 65536 linhas")
  65:          End If
  66:      End Sub
  67:  End Class

Posted in: .Net , ASP.Net , VB.Net  Tags: , ,

Páginas

Calendário

«  September 2010  »
MoTuWeThFrSaSu
303112345
6789101112
13141516171819
20212223242526
27282930123
45678910
View posts in large calendar