jishaojia 发表于 2015-12-5 21:34:00

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

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

http://gcdn.gcpowertools.com.cn/attachment.aspx?attachmentid=19270

得出工具条的代码我是这样写的。
/// <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();
      }





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






            GrapeCity.ActiveReports.PageReport _reportDef = new GrapeCity.ActiveReports.PageReport(new System.IO.FileInfo(Server.MapPath("这个是我报表文件")));

            switch (tableName)
            {
                case "IOT_Billhead":
                  _reportDef.Document.LocateDataSource += new GrapeCity.ActiveReports.LocateDataSourceEventHandler(“这个是我的数据载入方法”);
                  break;
            }
            GrapeCity.ActiveReports.Document.PageDocument _reportRuntime = new GrapeCity.ActiveReports.Document.PageDocument(_reportDef);
            GrapeCity.ActiveReports.Export.Excel.Section.XlsExport XlsExport1 = new GrapeCity.ActiveReports.Export.Excel.Section.XlsExport();

            System.IO.MemoryStream ms = new System.IO.MemoryStream();
            XlsExport1.FileFormat = GrapeCity.ActiveReports.Export.Excel.Section.FileFormat.Xlsx;
            XlsExport1.Export(_reportRuntime, ms);

            Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
            Response.AddHeader("content-disposition", Server.UrlPathEncode("attachment;filename=" + DateTime.Now.ToString("yyyyMMddhhmmss") + ".xlsx"));
            Response.BinaryWrite(ms.ToArray());
            Response.End();




      protected void Page_Load(object sender, EventArgs e)
      {
            if (Request["tableName"] != null &amp;&amp; Request["exporttype"] != null
                &amp;&amp; Request["ID"] != null &amp;&amp; Request["PageReportFile"] != null &amp;&amp;
                Request["tableName"].ToString().Trim() != "" &amp;&amp; Request["exporttype"].ToString().Trim() != ""
                &amp;&amp; Request["ID"].ToString().Trim() != "" &amp;&amp; Request["PageReportFile"].ToString().Trim() != ""
                )
            {
                string key = Request["exporttype"].ToString().Trim();
                TextBox_ID.Text = Request["ID"].ToString().Trim();
                string PageReportFile = Request["PageReportFile"].ToString().Trim();
                PageReport pr = new PageReport(new System.IO.FileInfo(Server.MapPath(PageReportFile)));
                switch (key)
                {
                  case "PDF":
                        ExportPdf(pr, Request["tableName"].ToString().Trim(), PageReportFile);
                        break;
                  case "Word":
                        ExportWord(pr, Request["tableName"].ToString().Trim(), PageReportFile);
                        break;
                  case "Excel":
                        ExportExcel(pr, Request["tableName"].ToString().Trim(), PageReportFile);
                        break;
                }
            }
            else
            {
                Response.Write("错误!");
                Response.End();
            }
      }




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



            GrapeCity.ActiveReports.PageReport _reportDef = new GrapeCity.ActiveReports.PageReport(new System.IO.FileInfo(Server.MapPath(PageReportFile)));

            switch (tableName)
            {
                case "IOT_Billhead":
                  _reportDef.Document.LocateDataSource += new GrapeCity.ActiveReports.LocateDataSourceEventHandler(IOT_Billhead_LocateDataSource);
                  break;
            }
            GrapeCity.ActiveReports.Document.PageDocument _reportRuntime = new GrapeCity.ActiveReports.Document.PageDocument(_reportDef);
            GrapeCity.ActiveReports.Export.Excel.Section.XlsExport XlsExport1 = new GrapeCity.ActiveReports.Export.Excel.Section.XlsExport();

            System.IO.MemoryStream ms = new System.IO.MemoryStream();
            XlsExport1.FileFormat = GrapeCity.ActiveReports.Export.Excel.Section.FileFormat.Xlsx;
            XlsExport1.Export(_reportRuntime, ms);

            Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
            Response.AddHeader("content-disposition", Server.UrlPathEncode("attachment;filename=" + DateTime.Now.ToString("yyyyMMddhhmmss") + ".xlsx"));
            Response.BinaryWrite(ms.ToArray());
            Response.End();


      }

      private void ExportWord(PageReport pr, string tableName, string PageReportFile)
      {
            Response.ContentType = "application/msword";
            Response.Clear();
            Response.HeaderEncoding = System.Text.Encoding.Default;
            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);
            Response.BinaryWrite(memStream.ToArray());
            Response.End();
      }

      private void ExportPdf(PageReport pr, string tableName, string PageReportFile)
      {
            Response.ContentType = "application/pdf";
            Response.Clear();
            Response.HeaderEncoding = System.Text.Encoding.Default;
            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);
            Response.BinaryWrite(memStream.ToArray());
            Response.Flush();
            Response.End();
      }



      #region IOT_Billhead

      public void IOT_Billhead_LocateDataSource(object sender, GrapeCity.ActiveReports.LocateDataSourceEventArgs args)
      {
            if (args.DataSourceName == "DataSource1")
            {
                if (args.DataSetName == "DataSet1")
                {
                  string sqltext = @"   select tab1.CreateName,tab1.ID,tab1.PaymentReasons,tab1.ReferenceNumber,tab1.SourceOfCharge,tab5.Remark AS OrganizationName,tab1.CreateTime
                  ,tab1.ContractName,(tab6.BillNo)asContractNo,tab2.Contract_Money,
                  isnull(tab1.AccumulativeThePrepaidAmount,0) as AccumulativeThePrepaidAmount
                  ,isnull(tab1.ThePrepaidAmount,0) as ThePrepaidAmount,
                  
                   isnull(tab1.AccumulativeCloseAnAccount,0) as AccumulativeCloseAnAccount
                  ,isnull(tab1.CloseAnAccount,0) asCloseAnAccount,
                  isnull(tab1.CutPaymentCashDeposit,0) asCutPaymentCashDeposit
                  ,isnull(tab1.CutPaymentAdvancePayment,0) asCutPaymentAdvancePayment,
                  isnull(tab1.CutPaymentOther,0) as CutPaymentOther,
                  isnull(tab1.ActualPayment,0) asActualPayment
                  ,tab1.Remarks,
                  tab1.Three_AccumulativeTotal,
                  tab1.Three_Total,
                  tab1.Three_Remarks,
                  isnull(tab1.AccessoryReceipts,0) AccessoryReceipts,
                  (isnull(tab1.ThePrepaidAmount,0) +isnull(tab1.ActualPayment,0)+isnull(tab1.Three_Total,0)) AS min_total,
                   (select dbo.L2U((isnull(tab1.ThePrepaidAmount,0) +isnull(tab1.ActualPayment,0)+isnull(tab1.Three_Total,0)),0)) AS max_total
                  ,
                  CASe PaymentMethod when 0 then '√' end as PaymentMethod1,
                  CASe PaymentMethod when 1 then '√' end as PaymentMethod2,
                  CASe PaymentMethod when 2 then '√' end as PaymentMethod3,tab1.TheInvoiceNumber ,
                  tab3.EnterpriseName,tab3.BankName,tab3.Account,tab3.EnterpriseNo,tab1.GeneralLedgerJournalName
                  from IOT_Billhead as tab1
                  left join IOT_Contract as tab2 on tab1.ContractID=tab2.ID
                  LEFT JOIN dbo.IOT_Contract_Body AS tab6 ON tab2.ID=tab6.IOT_ContractID
                  left join Project_Enterprise as tab3 on tab1.EnterpriseID=tab3.ID
                  left join Sys_User as tab4 on tab1.CreateName=tab4.ID
                  left join Sys_User_Organization as tab5 on tab4.ID=tab5.Sys_User_ID
                  
                  
                  
                  where tab1.id=" + TextBox_ID.Text.ToString();
                  args.Data = new BLL.Sys_DBHelper().GetData(sqltext).Tables;
                }
            }
      }

      #endregion





以上是我的一个完整代码。调用如上代码。请问为什么提示:
No data has been set. Please specify either a DataSet or a DataView to use

frank.zhang 发表于 2015-12-7 09:42:00

您好,

这个问题根据报错信息是DataSet没有指定,导出之前,需要对报表进行初始化。

另外,使用flash导出可以参考以下博客:
http://blog.gcpowertools.com.cn/post/2014/11/13/customize_flashviewer.aspx

jishaojia 发表于 2015-12-7 10:52:00

:jy74a:
我已经解决问题了。
我下面贴出代码来给大家看下吧,这样方便以后大家搜索的时候找到。
废了我一个周末终于弄懂了怎么整了。
我用一个单独页面了专门帮我处理整个系统的所有报表导出电子文档,以及导出电子表格,PDF
首先我专门处理得这个ASP.NET页面是这样写的。就包括报表文件路径都是通过url传值进来。



      protected void Page_Load(object sender, EventArgs e)
      {
            if (Request["tableName"] != null &amp;&amp; Request["exporttype"] != null
                &amp;&amp; Request["ID"] != null &amp;&amp; Request["PageReportFile"] != null &amp;&amp;
                Request["tableName"].ToString().Trim() != "" &amp;&amp; Request["exporttype"].ToString().Trim() != ""
                &amp;&amp; Request["ID"].ToString().Trim() != "" &amp;&amp; Request["PageReportFile"].ToString().Trim() != ""
                )
            {
                string key = Request["exporttype"].ToString().Trim();
                TextBox_ID.Text = Request["ID"].ToString().Trim();
                string PageReportFile = Request["PageReportFile"].ToString().Trim();
                PageReport pr = new PageReport(new System.IO.FileInfo(Server.MapPath(PageReportFile)));
                switch (key)
                {
                  case "PDF":
                        ExportPdf(pr, Request["tableName"].ToString().Trim(), PageReportFile);
                        break;
                  case "Word":
                        ExportWord(pr, Request["tableName"].ToString().Trim(), PageReportFile);
                        break;
                  case "Excel":
                        ExportExcel(pr, Request["tableName"].ToString().Trim(), PageReportFile);
                        break;
                }
            }
            else
            {
                Response.Write("错误!");
                Response.End();
            }
      }



      /// <summary>
      /// 执行导出Excel
      /// </summary>
      /// <param name="_reportDef"></param>
      /// <param name="tableName"></param>
      /// <param name="PageReportFile"></param>
      private void ExportExcel(PageReport _reportDef, string tableName, string PageReportFile)
      {
            GrapeCity.ActiveReports.Document.PageDocument _reportRuntime = new GrapeCity.ActiveReports.Document.PageDocument(_reportDef);
            _reportRuntime.LocateDataSource += new GrapeCity.ActiveReports.LocateDataSourceEventHandler(IOT_Billhead_LocateDataSource);

            //填充数据
            ExportDataSource(_reportRuntime, tableName);

            // Create an output directory
            System.IO.MemoryStream ms = new System.IO.MemoryStream();
            // Provide settings for your rendering output.
            GrapeCity.ActiveReports.Export.Excel.Page.ExcelRenderingExtensionSettings
            excelSetting = new GrapeCity.ActiveReports.Export.Excel.Page.ExcelRenderingExtensionSettings();
            excelSetting.FileFormat = GrapeCity.ActiveReports.Export.Excel.Page.FileFormat.Xls;
            excelSetting.MultiSheet = false;
            GrapeCity.ActiveReports.Extensibility.Rendering.ISettings setting = excelSetting;
            //Set the rendering extension and render the report.
            GrapeCity.ActiveReports.Export.Excel.Page.ExcelRenderingExtension
            excelRenderingExtension = new
            GrapeCity.ActiveReports.Export.Excel.Page.ExcelRenderingExtension();
            GrapeCity.ActiveReports.Rendering.IO.MemoryStreamProvider outputProvider = new GrapeCity.ActiveReports.Rendering.IO.MemoryStreamProvider();
            _reportRuntime.Render(excelRenderingExtension, outputProvider, excelSetting.GetSettings());
            Response.ContentType = "application/vnd.ms-excel";
            Response.AddHeader("content-disposition", "inline;filename=" + DateTime.Now.ToString("yyyyMMddhhmmss") + ".xls");
            outputProvider.GetPrimaryStream().OpenStream().CopyTo(ms);
            Response.BinaryWrite(ms.ToArray());
            Response.End();
      }

      /// <summary>
      /// 执行导出word
      /// </summary>
      /// <param name="_reportDef"></param>
      /// <param name="tableName"></param>
      /// <param name="PageReportFile"></param>
      private void ExportWord(PageReport _reportDef, string tableName, string PageReportFile)
      {

            GrapeCity.ActiveReports.Document.PageDocument _reportRuntime = new GrapeCity.ActiveReports.Document.PageDocument(_reportDef);
            _reportRuntime.LocateDataSource += new GrapeCity.ActiveReports.LocateDataSourceEventHandler(IOT_Billhead_LocateDataSource);

            //填充数据
            ExportDataSource(_reportRuntime, tableName);


            // Create an output directory
            System.IO.MemoryStream ms = new System.IO.MemoryStream();


            // Provide settings for your rendering output.
            GrapeCity.ActiveReports.Export.Word.Page.Settings wordSetting = new
            GrapeCity.ActiveReports.Export.Word.Page.Settings();
            wordSetting.UseMhtOutput = true;
            GrapeCity.ActiveReports.Extensibility.Rendering.ISettings setting = wordSetting;

            //Set the rendering extension and render the report.
            GrapeCity.ActiveReports.Export.Word.Page.WordRenderingExtension wordRenderingExtension =
            new GrapeCity.ActiveReports.Export.Word.Page.WordRenderingExtension();
            GrapeCity.ActiveReports.Rendering.IO.MemoryStreamProvider outputProvider = new GrapeCity.ActiveReports.Rendering.IO.MemoryStreamProvider();
            _reportRuntime.Render(wordRenderingExtension, outputProvider, wordSetting);

            Response.ContentType = "application/msword";
            Response.AddHeader("content-disposition", Server.UrlPathEncode("attachment;filename=" + DateTime.Now.ToString("yyyyMMddhhmmss") + ".doc"));
            outputProvider.GetPrimaryStream().OpenStream().CopyTo(ms);
            Response.BinaryWrite(ms.ToArray());
            Response.End();
      }

      /// <summary>
      /// 执行导出PDF
      /// </summary>
      /// <param name="_reportDef"></param>
      /// <param name="tableName"></param>
      /// <param name="PageReportFile"></param>
      private void ExportPdf(PageReport _reportDef, string tableName, string PageReportFile)
      {
            GrapeCity.ActiveReports.Document.PageDocument _reportRuntime = new GrapeCity.ActiveReports.Document.PageDocument(_reportDef);
            _reportRuntime.LocateDataSource += new GrapeCity.ActiveReports.LocateDataSourceEventHandler(IOT_Billhead_LocateDataSource);

            //填充数据
            ExportDataSource(_reportRuntime, tableName);

            // Create an output directory
            System.IO.MemoryStream ms = new System.IO.MemoryStream();

            // Provide settings for your rendering output.
            GrapeCity.ActiveReports.Export.Pdf.Page.Settings pdfSetting = new
            GrapeCity.ActiveReports.Export.Pdf.Page.Settings();
            GrapeCity.ActiveReports.Extensibility.Rendering.ISettings setting = pdfSetting;
            //Set the rendering extension and render the report.
            GrapeCity.ActiveReports.Export.Pdf.Page.PdfRenderingExtension pdfRenderingExtension =
            new GrapeCity.ActiveReports.Export.Pdf.Page.PdfRenderingExtension();
            GrapeCity.ActiveReports.Rendering.IO.MemoryStreamProvider outputProvider = new GrapeCity.ActiveReports.Rendering.IO.MemoryStreamProvider();
            _reportRuntime.Render(pdfRenderingExtension, outputProvider, pdfSetting);

            Response.ContentType = "application/pdf";
            Response.AddHeader("content-disposition", "inline;filename=" + DateTime.Now.ToString("yyyyMMddhhmmss") + ".pdf");
            outputProvider.GetPrimaryStream().OpenStream().CopyTo(ms);
            Response.BinaryWrite(ms.ToArray());
            Response.End();

      }

      /// <summary>
      /// 为控件填充数据
      /// </summary>
      /// <param name="_reportRuntime"></param>
      /// <param name="tableName"></param>
      private void ExportDataSource(GrapeCity.ActiveReports.Document.PageDocument _reportRuntime, string tableName)
      {
            switch (tableName)
            {
                case "IOT_Billhead":
                  _reportRuntime.LocateDataSource += new GrapeCity.ActiveReports.LocateDataSourceEventHandler(IOT_Billhead_LocateDataSource);
                  break;
                case "IOT_Bidding_Document":
                  _reportRuntime.LocateDataSource += new GrapeCity.ActiveReports.LocateDataSourceEventHandler(IOT_Bidding_Document_LocateDataSource);
                  break;
                case "IOT_Contract":
                  _reportRuntime.LocateDataSource += new GrapeCity.ActiveReports.LocateDataSourceEventHandler(IOT_Contract_LocateDataSource);
                  break;
                case "IOT_Contract_Body":
                  _reportRuntime.LocateDataSource += new GrapeCity.ActiveReports.LocateDataSourceEventHandler(IOT_Contract_Body_LocateDataSource);
                  break;
                case "IOT_Contract_ExamineReport":
                  _reportRuntime.LocateDataSource += new GrapeCity.ActiveReports.LocateDataSourceEventHandler(IOT_Contract_ExamineReport_LocateDataSource);
                  break;
                case "IOT_EnquiryPurchase":
                  _reportRuntime.LocateDataSource += new GrapeCity.ActiveReports.LocateDataSourceEventHandler(IOT_EnquiryPurchase_LocateDataSource);
                  break;
                case "IOT_ExpensesReimburse":
                  _reportRuntime.LocateDataSource += new GrapeCity.ActiveReports.LocateDataSourceEventHandler(IOT_ExpensesReimburse_LocateDataSource);
                  break;
                case "IOT_ExpensesReimburseSheet":
                  _reportRuntime.LocateDataSource += new GrapeCity.ActiveReports.LocateDataSourceEventHandler(IOT_ExpensesReimburseSheet_LocateDataSource);
                  break;
                case "IOT_InvitationForBid_Instructions":
                  _reportRuntime.LocateDataSource += new GrapeCity.ActiveReports.LocateDataSourceEventHandler(IOT_InvitationForBid_Instructions_LocateDataSource);
                  break;
                case "IOT_Project_Batch":
                  _reportRuntime.LocateDataSource += new GrapeCity.ActiveReports.LocateDataSourceEventHandler(IOT_Project_Batch_LocateDataSource);
                  break;
                case "IOT_Project_Complation":
                  _reportRuntime.LocateDataSource += new GrapeCity.ActiveReports.LocateDataSourceEventHandler(IOT_Project_Complation_LocateDataSource);
                  break;
                case "Project_BidInfo":
                  _reportRuntime.LocateDataSource += new GrapeCity.ActiveReports.LocateDataSourceEventHandler(Project_BidInfo_LocateDataSource);
                  break;
            }
      }




唯一值得注意的时候方法:ExportDataSource
这个是关键点,怎么样将dataset的数据填充到报表中,其实也和原来页面展示报表的一样,直接调用赋dataset的放,大概其一的方法如下。

      void IOT_Bidding_Document_LocateDataSource(object sender, GrapeCity.ActiveReports.LocateDataSourceEventArgs args)
      {
            if (args.DataSourceName == "DataSource1")
            {
                if (args.DataSetName == "DataSet1")
                {
                  args.Data = new ProjectManage.Common.SQLWhere().GetDataBySQL(@"select
IOT_Bidding_Document.ProjectName as 招标项目名称,
Sys_DataType.DataName as        招标类型,
IOT_Project.ProjectName as        所属项目,
IOT_Project.No as        项目标号,
IOT_Project.TotalMoney as        所属项目金额,
IOT_Bidding_Document.TotalMoney as        招标金额,
Sys_Organization.OrganizationName as 执行部门,
Sys_User.RealName as        经办人,
IOT_Bidding_Document.Contents as 内容摘要,
IOT_Bidding_Document.No as编号,
IOT_Bidding_Document.CreateTimeas 时间
from IOT_Bidding_Document
left join IOT_Project on IOT_Bidding_Document.Project_ID=IOT_Project.ID
left join Sys_DataType on IOT_Bidding_Document.ProjectType=Sys_DataType.ID
left join Sys_Organization on IOT_Bidding_Document.OrgID=Sys_Organization.ID
left join Sys_User on IOT_Bidding_Document.CreateName=Sys_User.ID
where IOT_Bidding_Document.id=" + TextBox_ID.Text.ToString() + " ").Tables;
                }
                if (args.DataSetName == "DataSet2")
                {
                  #region 如果是配置的步骤名称,方便下面循环时跳出
                  //如果是配置的步骤名称,方便下面循环时跳出
                  string url = Server.MapPath("~/config/Flow_Check_Panel_Config.xml");
                  XmlDocument xmlDoc = new XmlDocument();
                  xmlDoc.Load(url);
                  string FlowContentContinue = xmlDoc.SelectNodes("root/FlowContentContinue").Item(0).InnerText.ToString();
                  if (FlowContentContinue.Trim() != "")
                  {
                        string[] FlowContentContinueArr = FlowContentContinue.Split('|');
                        FlowContentContinue = "";
                        if (FlowContentContinueArr.Length > 0)
                        {
                            FlowContentContinue += "and(";
                            for (int fcca = 0; fcca < FlowContentContinueArr.Length; fcca++)
                            {
                              if (FlowContentContinueArr.ToString().Trim() == "")
                              {
                              }
                              else
                              {
                                    //    最后一个
                                    if (FlowContentContinueArr.Length == (fcca + 1))
                                    {
                                        FlowContentContinue += "   tab4.StepName not like '%" + FlowContentContinueArr + "%' ";
                                    }
                                    else
                                    {
                                        FlowContentContinue += "   tab4.StepName not like '%" + FlowContentContinueArr + "%'or";
                                    }
                              }
                            }
                            FlowContentContinue += ") ";
                        }
                  }
                  #endregion

                  args.Data = new ProjectManage.Common.SQLWhere().GetDataBySQL(@"select tab1.PostilContent,tab1.PostilDate,tab2.RealName,tab4.StepName,tab1.Docid,tab5.OrganizationName
,tab3.FlowID,tab1.StepID ,(case ISNULL(tab1.PostilType,0)when 0 then '待办理'
when 1 then '待办理'
when 2 then '回退'
when 3 then '办理完成'
when 4 then '拒绝'end) '审批意见'
from Flow_PostilNewas tab1 left join Sys_User as tab2 on tab1.PostilerID=tab2.ID
left join Flow_Document as tab3 on tab1.DocID=tab3.ID
left join Flow_Step as tab4 on tab3.FlowID=tab4.FlowID and tab1.StepID=tab4.StepID
left join dbo.Sys_User_Organization as tab6 on tab6.Sys_User_ID=tab2.ID
left join Sys_Organization as tab5 on tab5.ID=tab6.Sys_Organization
wheretab1.Docid=(select FlowDocumentID from IOT_Bidding_Document whereID=" + TextBox_ID.Text.ToString() + ")" + FlowContentContinue + "and isnull(tab1.StepID,0)>1order by tab1.StepID asc").Tables;
                }
                if (args.DataSetName == "DataSet3")
                {
                  args.Data = new ProjectManage.Common.SQLWhere().GetDataBySQL(@"select * from IOT_Adjunct where tableName='IOT_Bidding_Document' and tableid=" + TextBox_ID.Text.ToString()).Tables;
                }
            }
      }

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

感谢您解决问题后对我们反馈,给您分发 1000 金币。可以用于兑换论坛奖品。
金币规则:点击进入
礼品列表:点击进入
页: [1]
查看完整版本: 关于ActiveReports导出PDF,excel,word的问题。