找回密码
 立即注册

QQ登录

只需一步,快速开始

jishaojia
注册会员   /  发表于:2015-12-5 10:11  /   查看:4652  /  回复:1
关于ActiveReports导出PDF,exce,word的问题。
哪位大哥能帮个忙。
我现在想做一个通用的导出功能。并且多个报表可以调用。
首先我是



得出工具条的代码我是这样写的。
  1. /// <summary>
  2.         /// 输出报表工具
  3.         /// </summary>
  4.         /// <param name="rdlxurl"></param>
  5.         /// <param name="WebViewers"></param>
  6.         public void sToolTip(string rdlxurl, GrapeCity.ActiveReports.Web.WebViewer WebViewers, string url)
  7.         {
  8.             //设置显示语言版本为中文
  9.             WebViewers.FlashViewerOptions.ResourceLocale = "zh_CN";

  10.             //创建自定义工具条按钮
  11.             ToolButton btnPDF = Tool.CreateButton("PDF");
  12.             btnPDF.ToolTip = "导出到 PDF";
  13.             btnPDF.Caption = "导出到 PDF";
  14.             //设置点击按钮执行的服务
  15.             btnPDF.ClickNavigateTo = url + "/SubSystem/ActiveReports/ARExport.ashx?exporttype=PDF&amp;PageReportFile=" + rdlxurl;

  16.             //添加按钮到 FlashViewer 中
  17.             WebViewers.FlashViewerToolBar.Tools.Add(btnPDF);

  18.             ToolButton btnWord = Tool.CreateButton("Word");
  19.             btnWord.ToolTip = "导出到 Word";
  20.             btnWord.Caption = "导出到 Word";
  21.             btnWord.ClickNavigateTo = url + "/SubSystem/ActiveReports/ARExport.ashx?exporttype=Word&amp;PageReportFile=" + rdlxurl;
  22.             WebViewers.FlashViewerToolBar.Tools.Add(btnWord);

  23.             ToolButton btnExcel = Tool.CreateButton("Excel");
  24.             btnExcel.ToolTip = "导出到 Excel";
  25.             btnExcel.Caption = "导出到 Excel";
  26.             btnExcel.ClickNavigateTo = url + "/SubSystem/ActiveReports/ARExport.ashx?exporttype=Excel&amp;PageReportFile=" + rdlxurl;
  27.             WebViewers.FlashViewerToolBar.Tools.Add(btnExcel);
  28.         }
复制代码


调用实现如下:
  1. ;
  2.                
  3.                 GrapeCity.ActiveReports.PageReport rpt2 = new GrapeCity.ActiveReports.PageReport();
  4.                 string rdlxurl = "~/SubSystem/ActiveReports/IOT_Billhead/Active_IOT_Billhead.rdlx";
  5.                 rpt2.Load(new System.IO.FileInfo(Server.MapPath(rdlxurl)));
  6.                 //生成PDF,EXCEL,WORD 导出按钮
  7.                 sToolTip(rdlxurl, this.WebViewer1, HttpContext.Current.Request.Url.ToString().Substring(0, HttpContext.Current.Request.Url.ToString().IndexOf("/SubSystem")));//主要是这一句调佣出工具条
  8.                 WebViewer1.Report = rpt2;
复制代码

这样得出工具条,然后点调整即可导出,在调整的页面传相关的参数进去进行读取数据。

然后再地址栏传参数到指定页面进行输出对应的导出文件




  1.         public void ProcessRequest(HttpContext context)
  2.         {
  3.             context.Response.ContentType = "text/html";
  4.             var key = context.Request["exporttype"];
  5.             var PageReportFile = context.Request["PageReportFile"];
  6.             PageReport pr = new PageReport(new System.IO.FileInfo(context.Server.MapPath(PageReportFile)));
  7.             switch (key)
  8.             {
  9.                 case "PDF":
  10.                     ExportPdf(context, pr);
  11.                     break;
  12.                 case "Word":
  13.                     ExportWord(context, pr);
  14.                     break;
  15.                 case "Excel":
  16.                     ExportExcel(context, pr);
  17.                     break;
  18.             }
  19.         }


  20.         private void ExportExcel(HttpContext context, PageReport _reportDef)
  21.         {
  22.             context.Response.ContentType = "application/excel";
  23.             context.Response.Clear();
  24.             context.Response.AddHeader("content-disposition", "attachment;filename=" + DateTime.Now.ToString("yyyyMMddhhmmss") + ".xls");
  25.             XlsExport xls = new XlsExport();
  26.             System.IO.MemoryStream memStream = new System.IO.MemoryStream();
  27.             xls.FileFormat = FileFormat.Xlsx;
  28.             xls.Export(_reportDef.Document, memStream);
  29.             context.Response.BinaryWrite(memStream.ToArray());
  30.             context.Response.End();





  31.         }

  32.         private void ExportWord(HttpContext context, PageReport pr)
  33.         {
  34.             context.Response.ContentType = "application/msword";
  35.             context.Response.Clear();
  36.             context.Response.HeaderEncoding = System.Text.Encoding.Default;
  37.             context.Response.AddHeader("content-disposition", "attachment;filename=" + DateTime.Now.ToString("yyyyMMddhhmmss") + ".doc");
  38.             var word = new RtfExport();
  39.             var memStream = new System.IO.MemoryStream();
  40.             word.Export(pr.Document, memStream);
  41.             context.Response.BinaryWrite(memStream.ToArray());
  42.             context.Response.End();
  43.         }

  44.         private void ExportPdf(HttpContext context, PageReport pr)
  45.         {
  46.             context.Response.ContentType = "application/pdf";
  47.             context.Response.Clear();
  48.             context.Response.HeaderEncoding = System.Text.Encoding.Default;
  49.             context.Response.AddHeader("content-disposition", "attachment;filename=" + DateTime.Now.ToString("yyyyMMddhhmmss") + ".pdf");
  50.             var pdf = new PdfExport();
  51.             var memStream = new System.IO.MemoryStream();
  52.             pdf.Export(pr.Document, memStream);
  53.             context.Response.BinaryWrite(memStream.ToArray());
  54.             context.Response.Flush();
  55.             context.Response.End();
  56.         }
复制代码


以上是我的导出代码,请问怎么样赋值,或者是怎么样完善它能导出。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

1 个回复

倒序浏览
frank.zhang
社区贡献组   /  发表于:2015-12-7 13:38:00
沙发
您好,

重复问题,这个问题在http://gcdn.gcpowertools.com.cn/showtopic-19747.html
中讨论
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部