Inquiridor
Exportando para PDF dados de uma Gridview usando ReportView

Pergunta
-
Olá Pessoal,
Estou criando um método que salve os dados de uma Gridview em PDF, me falaram que o ReportView seria a melhor forma para tal ação. Gostaria saber quais são os procedimentos para essa façanha, vi muitos tutorias onde mostra procedimentos intuitivos do VS2010 mas não me interessa, gostaria via código.
Agradeço desde já a paciência dos graduados...
// caminho para salvar string endereco; //janela para salvamento FolderBrowserDialog janelasave = new FolderBrowserDialog(); if (janelasave.ShowDialog() == DialogResult.Cancel) { return;//cancelar processo } //adicionando o caminho e o nome do documento endereco = janelasave.SelectedPath + "\\" + "Relatorio" + ".pdf"; //definindo o formato do arquivo Report arquivosave = new Report(new PdfFormatter()); try { //definição de fonte FontDef fonte = new FontDef(arquivosave, FontDef.StandardFont.TimesRoman); FontProp tamanhofonte = new FontProp(fonte,10); //criação de pagina Page pagina = new Page(arquivosave); //setando dados //sem logica } catch() { } finally { }
Todas as Respostas
-
Segue exemplo de rendererização de um report como PDF.
List<objGuiaConsulta> ListaGuia = objg.GetAll(idEntrada, WebProfile.Current.Conta.idEmpresa, "");
ReportViewer1.LocalReport.ReportPath = Server.MapPath("~/Reports/Guias/Consulta.rdlc");
ReportDataSource rd1 = new ReportDataSource("Data", ListaGuia);
ReportViewer1.LocalReport.DataSources.Add(rd1);
Warning[] Warnings = new Warning[10];
string[] streamids = new string[10];
string mimeType = "";
string encoding = "";
string fileNameExtension = "";string deviceInfo =
"<DeviceInfo>" +
" <PageWidth>8.27in</PageWidth>" +
" <PageHeight>11.69in</PageHeight>" +
"</DeviceInfo>";
Byte[] meusbytes = ReportViewer1.LocalReport.Render("PDF", deviceInfo, out mimeType, out encoding, out fileNameExtension, out streamids, out Warnings);
HttpContext.Current.Response.Buffer = true;
HttpContext.Current.Response.Clear();
HttpContext.Current.Response.ContentType = mimeType;
HttpContext.Current.Response.BinaryWrite(meusbytes);
HttpContext.Current.Response.Flush();
HttpContext.Current.Response.End(); -
Você ainda pode com este método renderizar o Report como excel ou word, basta mudar na linha:
Byte[] meusbytes = ReportViewer1.LocalReport.Render("PDF", deviceInfo, out mimeType, out encoding, out fileNameExtension, out streamids, out Warnings);
Para:
Byte[] meusbytes = ReportViewer1.LocalReport.Render("Excel", deviceInfo, out mimeType, out encoding, out fileNameExtension, out streamids, out Warnings);
ou
Byte[] meusbytes = ReportViewer1.LocalReport.Render("Word", deviceInfo, out mimeType, out encoding, out fileNameExtension, out streamids, out Warnings);
-
Só um detalhe:
Para construir o report via código, você terá que construí-lo via XML. Não há classes que dão suporte para construção do Report. Ou você faz no modo design o que deseja, ou faz dinamicamente via XML e string. Não há outro meio.
-
Se você deseja transformar uma gridview de fato em um pdf, o que você está querendo então é tranformar html em PDF. Para isso, aconselho a biblioteca ITextSharp, gratuita. Essa biblioteca oferece métodos de confecção de PDF e de transformação de html em PDF, mas só que há pouca decumentação a respeito.
- Editado Marcos_Marques quarta-feira, 9 de janeiro de 2013 17:09