Em aplicativos da Web, não podemos exportar relatórios como os aplicativos do Windows porque o programa é executado no lado do servidor. Quando a exportação é executada, os resultados também estão no lado do servidor. Na verdade, isso não é difícil. O método é: exportar o relatório para um arquivo de relatório temporário pré-criado em um determinado site e, em seguida, usar o comando response.redirect() para apontar a URL do navegador para o local do relatório, para que isso aconteça. o navegador do usuário tentará baixar o arquivo recém-exportado, e o arquivo será baixado para o cliente, obtendo assim o efeito que precisamos. Parte do código é a seguinte:
string pública ExportReport()
{
ExportOptions creo = new ExportOptions();
DiskFileDestinationOptions crdo = new DiskFileDestinationOptions();
string FileName = Request.PhysicalApplicationPath + "ExportFileExap.xls"
//Definir opções de exportação
;
creo = Myrpt.ExportOptions;
creo.ExportFormatType = ExportFormatType.Excel;
creo.ExportDestinationType = ExportDestinationType.DiskFile;
//Definir opções de arquivo em disco
crdo.DiskFileName = NomeDoArquivo;
creo.DestinationOptions = crdo;
//Exportar relatório
MeuRpt.Export();
return NomeArquivo;
}
private void buttonExport_Click(objeto remetente, System.EventArgs e)
{
string NomeArquivo = ExportReport();
Response.Redirect(Replace(NomeArquivo,Request.PhysicalApplicationPath + "ExportFile",""));
}
Ressalta-se que ao exportar para a web é necessário ter permissão para criar arquivos no diretório de exportação. Se as permissões forem insuficientes, aparecerá o erro "Acesso ao arquivo de relatório negado...". Basta permitir que o usuário ASPNET (o usuário do sistema gerado automaticamente durante a instalação do .NET Framework) tenha permissões de "gravação" no arquivo do diretório de exportação.