jishaojia 发表于 2015-12-5 10:11:00

关于ActiveReports导出PDF,excel,word的问题。

关于ActiveReports导出PDF,exce,word的问题。
哪位大哥能帮个忙。
我现在想做一个通用的导出功能。并且多个报表可以调用。
首先我是



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

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

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

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

            ToolButton btnExcel = Tool.CreateButton("Excel");
            btnExcel.ToolTip = "导出到 Excel";
            btnExcel.Caption = "导出到 Excel";
            btnExcel.ClickNavigateTo = url + "/SubSystem/ActiveReports/ARExport.ashx?exporttype=Excel&amp;PageReportFile=" + rdlxurl;
            WebViewers.FlashViewerToolBar.Tools.Add(btnExcel);
      }


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

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

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




      public void ProcessRequest(HttpContext context)
      {
            context.Response.ContentType = "text/html";
            var key = context.Request["exporttype"];
            var PageReportFile = context.Request["PageReportFile"];
            PageReport pr = new PageReport(new System.IO.FileInfo(context.Server.MapPath(PageReportFile)));
            switch (key)
            {
                case "PDF":
                  ExportPdf(context, pr);
                  break;
                case "Word":
                  ExportWord(context, pr);
                  break;
                case "Excel":
                  ExportExcel(context, pr);
                  break;
            }
      }


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





      }

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

      private void ExportPdf(HttpContext context, PageReport pr)
      {
            context.Response.ContentType = "application/pdf";
            context.Response.Clear();
            context.Response.HeaderEncoding = System.Text.Encoding.Default;
            context.Response.AddHeader("content-disposition", "attachment;filename=" + DateTime.Now.ToString("yyyyMMddhhmmss") + ".pdf");
            var pdf = new PdfExport();
            var memStream = new System.IO.MemoryStream();
            pdf.Export(pr.Document, memStream);
            context.Response.BinaryWrite(memStream.ToArray());
            context.Response.Flush();
            context.Response.End();
      }


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

frank.zhang 发表于 2015-12-7 13:38:00

您好,

重复问题,这个问题在http://gcdn.gcpowertools.com.cn/showtopic-19747.html
中讨论
页: [1]
查看完整版本: 关于ActiveReports导出PDF,excel,word的问题。