找回密码
 立即注册

QQ登录

只需一步,快速开始

jishaojia
注册会员   /  发表于:2015-12-5 21:34  /   查看:4041  /  回复:3
关于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.         }
复制代码





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






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

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

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

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




  1.         protected void Page_Load(object sender, EventArgs e)
  2.         {
  3.             if (Request["tableName"] != null &amp;&amp; Request["exporttype"] != null
  4.                 &amp;&amp; Request["ID"] != null &amp;&amp; Request["PageReportFile"] != null &amp;&amp;
  5.                 Request["tableName"].ToString().Trim() != "" &amp;&amp; Request["exporttype"].ToString().Trim() != ""
  6.                 &amp;&amp; Request["ID"].ToString().Trim() != "" &amp;&amp; Request["PageReportFile"].ToString().Trim() != ""
  7.                 )
  8.             {
  9.                 string key = Request["exporttype"].ToString().Trim();
  10.                 TextBox_ID.Text = Request["ID"].ToString().Trim();
  11.                 string PageReportFile = Request["PageReportFile"].ToString().Trim();
  12.                 PageReport pr = new PageReport(new System.IO.FileInfo(Server.MapPath(PageReportFile)));
  13.                 switch (key)
  14.                 {
  15.                     case "PDF":
  16.                         ExportPdf(pr, Request["tableName"].ToString().Trim(), PageReportFile);
  17.                         break;
  18.                     case "Word":
  19.                         ExportWord(pr, Request["tableName"].ToString().Trim(), PageReportFile);
  20.                         break;
  21.                     case "Excel":
  22.                         ExportExcel(pr, Request["tableName"].ToString().Trim(), PageReportFile);
  23.                         break;
  24.                 }
  25.             }
  26.             else
  27.             {
  28.                 Response.Write("错误!");
  29.                 Response.End();
  30.             }
  31.         }




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



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

  44.             switch (tableName)
  45.             {
  46.                 case "IOT_Billhead":
  47.                     _reportDef.Document.LocateDataSource += new GrapeCity.ActiveReports.LocateDataSourceEventHandler(IOT_Billhead_LocateDataSource);
  48.                     break;
  49.             }
  50.             GrapeCity.ActiveReports.Document.PageDocument _reportRuntime = new GrapeCity.ActiveReports.Document.PageDocument(_reportDef);
  51.             GrapeCity.ActiveReports.Export.Excel.Section.XlsExport XlsExport1 = new GrapeCity.ActiveReports.Export.Excel.Section.XlsExport();

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

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


  59.         }

  60.         private void ExportWord(PageReport pr, string tableName, string PageReportFile)
  61.         {
  62.             Response.ContentType = "application/msword";
  63.             Response.Clear();
  64.             Response.HeaderEncoding = System.Text.Encoding.Default;
  65.             Response.AddHeader("content-disposition", "attachment;filename=" + DateTime.Now.ToString("yyyyMMddhhmmss") + ".doc");
  66.             var word = new RtfExport();
  67.             var memStream = new System.IO.MemoryStream();
  68.             word.Export(pr.Document, memStream);
  69.             Response.BinaryWrite(memStream.ToArray());
  70.             Response.End();
  71.         }

  72.         private void ExportPdf(PageReport pr, string tableName, string PageReportFile)
  73.         {
  74.             Response.ContentType = "application/pdf";
  75.             Response.Clear();
  76.             Response.HeaderEncoding = System.Text.Encoding.Default;
  77.             Response.AddHeader("content-disposition", "attachment;filename=" + DateTime.Now.ToString("yyyyMMddhhmmss") + ".pdf");
  78.             var pdf = new PdfExport();
  79.             var memStream = new System.IO.MemoryStream();
  80.             pdf.Export(pr.Document, memStream);
  81.             Response.BinaryWrite(memStream.ToArray());
  82.             Response.Flush();
  83.             Response.End();
  84.         }



  85.         #region IOT_Billhead

  86.         public void IOT_Billhead_LocateDataSource(object sender, GrapeCity.ActiveReports.LocateDataSourceEventArgs args)
  87.         {
  88.             if (args.DataSourceName == "DataSource1")
  89.             {
  90.                 if (args.DataSetName == "DataSet1")
  91.                 {
  92.                     string sqltext = @"   select tab1.CreateName,tab1.ID,tab1.PaymentReasons,tab1.ReferenceNumber,tab1.SourceOfCharge,tab5.Remark AS OrganizationName,tab1.CreateTime
  93.                     ,tab1.ContractName,(tab6.BillNo)as  ContractNo,tab2.Contract_Money,
  94.                     isnull(tab1.AccumulativeThePrepaidAmount,0) as AccumulativeThePrepaidAmount
  95.                     ,isnull(tab1.ThePrepaidAmount,0) as ThePrepaidAmount,
  96.                     
  97.                    isnull(tab1.AccumulativeCloseAnAccount,0) as AccumulativeCloseAnAccount
  98.                     ,isnull(tab1.CloseAnAccount,0) as  CloseAnAccount,
  99.                     isnull(tab1.CutPaymentCashDeposit,0) as  CutPaymentCashDeposit
  100.                     ,isnull(tab1.CutPaymentAdvancePayment,0) as  CutPaymentAdvancePayment,
  101.                     isnull(tab1.CutPaymentOther,0) as CutPaymentOther,
  102.                     isnull(tab1.ActualPayment,0) as  ActualPayment
  103.                     ,tab1.Remarks,
  104.                     tab1.Three_AccumulativeTotal,
  105.                     tab1.Three_Total,
  106.                     tab1.Three_Remarks,
  107.                     isnull(tab1.AccessoryReceipts,0) AccessoryReceipts,
  108.                     (isnull(tab1.ThePrepaidAmount,0) +isnull(tab1.ActualPayment,0)+isnull(tab1.Three_Total,0)) AS min_total,
  109.                    (select dbo.L2U((isnull(tab1.ThePrepaidAmount,0) +isnull(tab1.ActualPayment,0)+isnull(tab1.Three_Total,0)),0)) AS max_total
  110.                     ,
  111.                     CASe PaymentMethod when 0 then '√' end as PaymentMethod1,
  112.                     CASe PaymentMethod when 1 then '√' end as PaymentMethod2,
  113.                     CASe PaymentMethod when 2 then '√' end as PaymentMethod3,tab1.TheInvoiceNumber ,
  114.                     tab3.EnterpriseName,tab3.BankName,tab3.Account,tab3.EnterpriseNo,tab1.GeneralLedgerJournalName
  115.                     from IOT_Billhead as tab1
  116.                     left join IOT_Contract as tab2 on tab1.ContractID=tab2.ID
  117.                     LEFT JOIN dbo.IOT_Contract_Body AS tab6 ON tab2.ID=tab6.IOT_ContractID
  118.                     left join Project_Enterprise as tab3 on tab1.EnterpriseID=tab3.ID  
  119.                     left join Sys_User as tab4 on tab1.CreateName=tab4.ID
  120.                     left join Sys_User_Organization as tab5 on tab4.ID=tab5.Sys_User_ID
  121.                     
  122.                     
  123.                     
  124.                     where tab1.id=" + TextBox_ID.Text.ToString();
  125.                     args.Data = new BLL.Sys_DBHelper().GetData(sqltext).Tables[0];
  126.                 }
  127.             }
  128.         }

  129.         #endregion
复制代码





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

3 个回复

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

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

另外,使用flash导出可以参考以下博客:
http://blog.gcpowertools.com.cn/ ... ze_flashviewer.aspx
回复 使用道具 举报
jishaojia
注册会员   /  发表于:2015-12-7 10:52:00
板凳

我已经解决问题了。
我下面贴出代码来给大家看下吧,这样方便以后大家搜索的时候找到。
废了我一个周末终于弄懂了怎么整了。
我用一个单独页面了专门帮我处理整个系统的所有报表导出电子文档,以及导出电子表格,PDF
首先我专门处理得这个ASP.NET页面是这样写的。就包括报表文件路径都是通过url传值进来。
  1.         protected void Page_Load(object sender, EventArgs e)
  2.         {
  3.             if (Request["tableName"] != null &amp;&amp; Request["exporttype"] != null
  4.                 &amp;&amp; Request["ID"] != null &amp;&amp; Request["PageReportFile"] != null &amp;&amp;
  5.                 Request["tableName"].ToString().Trim() != "" &amp;&amp; Request["exporttype"].ToString().Trim() != ""
  6.                 &amp;&amp; Request["ID"].ToString().Trim() != "" &amp;&amp; Request["PageReportFile"].ToString().Trim() != ""
  7.                 )
  8.             {
  9.                 string key = Request["exporttype"].ToString().Trim();
  10.                 TextBox_ID.Text = Request["ID"].ToString().Trim();
  11.                 string PageReportFile = Request["PageReportFile"].ToString().Trim();
  12.                 PageReport pr = new PageReport(new System.IO.FileInfo(Server.MapPath(PageReportFile)));
  13.                 switch (key)
  14.                 {
  15.                     case "PDF":
  16.                         ExportPdf(pr, Request["tableName"].ToString().Trim(), PageReportFile);
  17.                         break;
  18.                     case "Word":
  19.                         ExportWord(pr, Request["tableName"].ToString().Trim(), PageReportFile);
  20.                         break;
  21.                     case "Excel":
  22.                         ExportExcel(pr, Request["tableName"].ToString().Trim(), PageReportFile);
  23.                         break;
  24.                 }
  25.             }
  26.             else
  27.             {
  28.                 Response.Write("错误!");
  29.                 Response.End();
  30.             }
  31.         }
  32.         /// <summary>
  33.         /// 执行导出Excel
  34.         /// </summary>
  35.         /// <param name="_reportDef"></param>
  36.         /// <param name="tableName"></param>
  37.         /// <param name="PageReportFile"></param>
  38.         private void ExportExcel(PageReport _reportDef, string tableName, string PageReportFile)
  39.         {
  40.             GrapeCity.ActiveReports.Document.PageDocument _reportRuntime = new GrapeCity.ActiveReports.Document.PageDocument(_reportDef);
  41.             _reportRuntime.LocateDataSource += new GrapeCity.ActiveReports.LocateDataSourceEventHandler(IOT_Billhead_LocateDataSource);
  42.             //填充数据
  43.             ExportDataSource(_reportRuntime, tableName);
  44.             // Create an output directory
  45.             System.IO.MemoryStream ms = new System.IO.MemoryStream();
  46.             // Provide settings for your rendering output.
  47.             GrapeCity.ActiveReports.Export.Excel.Page.ExcelRenderingExtensionSettings
  48.             excelSetting = new GrapeCity.ActiveReports.Export.Excel.Page.ExcelRenderingExtensionSettings();
  49.             excelSetting.FileFormat = GrapeCity.ActiveReports.Export.Excel.Page.FileFormat.Xls;
  50.             excelSetting.MultiSheet = false;
  51.             GrapeCity.ActiveReports.Extensibility.Rendering.ISettings setting = excelSetting;
  52.             //Set the rendering extension and render the report.
  53.             GrapeCity.ActiveReports.Export.Excel.Page.ExcelRenderingExtension
  54.             excelRenderingExtension = new
  55.             GrapeCity.ActiveReports.Export.Excel.Page.ExcelRenderingExtension();
  56.             GrapeCity.ActiveReports.Rendering.IO.MemoryStreamProvider outputProvider = new GrapeCity.ActiveReports.Rendering.IO.MemoryStreamProvider();
  57.             _reportRuntime.Render(excelRenderingExtension, outputProvider, excelSetting.GetSettings());
  58.             Response.ContentType = "application/vnd.ms-excel";
  59.             Response.AddHeader("content-disposition", "inline;filename=" + DateTime.Now.ToString("yyyyMMddhhmmss") + ".xls");
  60.             outputProvider.GetPrimaryStream().OpenStream().CopyTo(ms);
  61.             Response.BinaryWrite(ms.ToArray());
  62.             Response.End();
  63.         }
  64.         /// <summary>
  65.         /// 执行导出word
  66.         /// </summary>
  67.         /// <param name="_reportDef"></param>
  68.         /// <param name="tableName"></param>
  69.         /// <param name="PageReportFile"></param>
  70.         private void ExportWord(PageReport _reportDef, string tableName, string PageReportFile)
  71.         {
  72.             GrapeCity.ActiveReports.Document.PageDocument _reportRuntime = new GrapeCity.ActiveReports.Document.PageDocument(_reportDef);
  73.             _reportRuntime.LocateDataSource += new GrapeCity.ActiveReports.LocateDataSourceEventHandler(IOT_Billhead_LocateDataSource);
  74.             //填充数据
  75.             ExportDataSource(_reportRuntime, tableName);
  76.             // Create an output directory
  77.             System.IO.MemoryStream ms = new System.IO.MemoryStream();
  78.             // Provide settings for your rendering output.
  79.             GrapeCity.ActiveReports.Export.Word.Page.Settings wordSetting = new
  80.             GrapeCity.ActiveReports.Export.Word.Page.Settings();
  81.             wordSetting.UseMhtOutput = true;
  82.             GrapeCity.ActiveReports.Extensibility.Rendering.ISettings setting = wordSetting;
  83.             //Set the rendering extension and render the report.
  84.             GrapeCity.ActiveReports.Export.Word.Page.WordRenderingExtension wordRenderingExtension =
  85.             new GrapeCity.ActiveReports.Export.Word.Page.WordRenderingExtension();
  86.             GrapeCity.ActiveReports.Rendering.IO.MemoryStreamProvider outputProvider = new GrapeCity.ActiveReports.Rendering.IO.MemoryStreamProvider();
  87.             _reportRuntime.Render(wordRenderingExtension, outputProvider, wordSetting);
  88.             Response.ContentType = "application/msword";
  89.             Response.AddHeader("content-disposition", Server.UrlPathEncode("attachment;filename=" + DateTime.Now.ToString("yyyyMMddhhmmss") + ".doc"));
  90.             outputProvider.GetPrimaryStream().OpenStream().CopyTo(ms);
  91.             Response.BinaryWrite(ms.ToArray());
  92.             Response.End();
  93.         }
  94.         /// <summary>
  95.         /// 执行导出PDF
  96.         /// </summary>
  97.         /// <param name="_reportDef"></param>
  98.         /// <param name="tableName"></param>
  99.         /// <param name="PageReportFile"></param>
  100.         private void ExportPdf(PageReport _reportDef, string tableName, string PageReportFile)
  101.         {
  102.             GrapeCity.ActiveReports.Document.PageDocument _reportRuntime = new GrapeCity.ActiveReports.Document.PageDocument(_reportDef);
  103.             _reportRuntime.LocateDataSource += new GrapeCity.ActiveReports.LocateDataSourceEventHandler(IOT_Billhead_LocateDataSource);
  104.             //填充数据
  105.             ExportDataSource(_reportRuntime, tableName);
  106.             // Create an output directory
  107.             System.IO.MemoryStream ms = new System.IO.MemoryStream();
  108.             // Provide settings for your rendering output.
  109.             GrapeCity.ActiveReports.Export.Pdf.Page.Settings pdfSetting = new
  110.             GrapeCity.ActiveReports.Export.Pdf.Page.Settings();
  111.             GrapeCity.ActiveReports.Extensibility.Rendering.ISettings setting = pdfSetting;
  112.             //Set the rendering extension and render the report.
  113.             GrapeCity.ActiveReports.Export.Pdf.Page.PdfRenderingExtension pdfRenderingExtension =
  114.             new GrapeCity.ActiveReports.Export.Pdf.Page.PdfRenderingExtension();
  115.             GrapeCity.ActiveReports.Rendering.IO.MemoryStreamProvider outputProvider = new GrapeCity.ActiveReports.Rendering.IO.MemoryStreamProvider();
  116.             _reportRuntime.Render(pdfRenderingExtension, outputProvider, pdfSetting);
  117.             Response.ContentType = "application/pdf";
  118.             Response.AddHeader("content-disposition", "inline;filename=" + DateTime.Now.ToString("yyyyMMddhhmmss") + ".pdf");
  119.             outputProvider.GetPrimaryStream().OpenStream().CopyTo(ms);
  120.             Response.BinaryWrite(ms.ToArray());
  121.             Response.End();
  122.         }
  123.         /// <summary>
  124.         /// 为控件填充数据
  125.         /// </summary>
  126.         /// <param name="_reportRuntime"></param>
  127.         /// <param name="tableName"></param>
  128.         private void ExportDataSource(GrapeCity.ActiveReports.Document.PageDocument _reportRuntime, string tableName)
  129.         {
  130.             switch (tableName)
  131.             {
  132.                 case "IOT_Billhead":
  133.                     _reportRuntime.LocateDataSource += new GrapeCity.ActiveReports.LocateDataSourceEventHandler(IOT_Billhead_LocateDataSource);
  134.                     break;
  135.                 case "IOT_Bidding_Document":
  136.                     _reportRuntime.LocateDataSource += new GrapeCity.ActiveReports.LocateDataSourceEventHandler(IOT_Bidding_Document_LocateDataSource);
  137.                     break;
  138.                 case "IOT_Contract":
  139.                     _reportRuntime.LocateDataSource += new GrapeCity.ActiveReports.LocateDataSourceEventHandler(IOT_Contract_LocateDataSource);
  140.                     break;
  141.                 case "IOT_Contract_Body":
  142.                     _reportRuntime.LocateDataSource += new GrapeCity.ActiveReports.LocateDataSourceEventHandler(IOT_Contract_Body_LocateDataSource);
  143.                     break;
  144.                 case "IOT_Contract_ExamineReport":
  145.                     _reportRuntime.LocateDataSource += new GrapeCity.ActiveReports.LocateDataSourceEventHandler(IOT_Contract_ExamineReport_LocateDataSource);
  146.                     break;
  147.                 case "IOT_EnquiryPurchase":
  148.                     _reportRuntime.LocateDataSource += new GrapeCity.ActiveReports.LocateDataSourceEventHandler(IOT_EnquiryPurchase_LocateDataSource);
  149.                     break;
  150.                 case "IOT_ExpensesReimburse":
  151.                     _reportRuntime.LocateDataSource += new GrapeCity.ActiveReports.LocateDataSourceEventHandler(IOT_ExpensesReimburse_LocateDataSource);
  152.                     break;
  153.                 case "IOT_ExpensesReimburseSheet":
  154.                     _reportRuntime.LocateDataSource += new GrapeCity.ActiveReports.LocateDataSourceEventHandler(IOT_ExpensesReimburseSheet_LocateDataSource);
  155.                     break;
  156.                 case "IOT_InvitationForBid_Instructions":
  157.                     _reportRuntime.LocateDataSource += new GrapeCity.ActiveReports.LocateDataSourceEventHandler(IOT_InvitationForBid_Instructions_LocateDataSource);
  158.                     break;
  159.                 case "IOT_Project_Batch":
  160.                     _reportRuntime.LocateDataSource += new GrapeCity.ActiveReports.LocateDataSourceEventHandler(IOT_Project_Batch_LocateDataSource);
  161.                     break;
  162.                 case "IOT_Project_Complation":
  163.                     _reportRuntime.LocateDataSource += new GrapeCity.ActiveReports.LocateDataSourceEventHandler(IOT_Project_Complation_LocateDataSource);
  164.                     break;
  165.                 case "Project_BidInfo":
  166.                     _reportRuntime.LocateDataSource += new GrapeCity.ActiveReports.LocateDataSourceEventHandler(Project_BidInfo_LocateDataSource);
  167.                     break;
  168.             }
  169.         }
复制代码

唯一值得注意的时候方法:ExportDataSource
这个是关键点,怎么样将dataset的数据填充到报表中,其实也和原来页面展示报表的一样,直接调用赋dataset的放,大概其一的方法如下。
  1.         void IOT_Bidding_Document_LocateDataSource(object sender, GrapeCity.ActiveReports.LocateDataSourceEventArgs args)
  2.         {
  3.             if (args.DataSourceName == "DataSource1")
  4.             {
  5.                 if (args.DataSetName == "DataSet1")
  6.                 {
  7.                     args.Data = new ProjectManage.Common.SQLWhere().GetDataBySQL(@"select
  8. IOT_Bidding_Document.ProjectName as 招标项目名称,
  9. Sys_DataType.DataName as        招标类型,
  10. IOT_Project.ProjectName as        所属项目,
  11. IOT_Project.No as        项目标号,
  12. IOT_Project.TotalMoney as        所属项目金额,
  13. IOT_Bidding_Document.TotalMoney as        招标金额,
  14. Sys_Organization.OrganizationName as 执行部门,
  15. Sys_User.RealName as        经办人,
  16. IOT_Bidding_Document.Contents as 内容摘要,
  17. IOT_Bidding_Document.No as  编号,
  18. IOT_Bidding_Document.CreateTime  as 时间
  19. from IOT_Bidding_Document
  20. left join IOT_Project on IOT_Bidding_Document.Project_ID=IOT_Project.ID
  21. left join Sys_DataType on IOT_Bidding_Document.ProjectType=Sys_DataType.ID
  22. left join Sys_Organization on IOT_Bidding_Document.OrgID=Sys_Organization.ID
  23. left join Sys_User on IOT_Bidding_Document.CreateName=Sys_User.ID
  24. where IOT_Bidding_Document.id=" + TextBox_ID.Text.ToString() + " ").Tables[0];
  25.                 }
  26.                 if (args.DataSetName == "DataSet2")
  27.                 {
  28.                     #region 如果是配置的步骤名称,方便下面循环时跳出
  29.                     //如果是配置的步骤名称,方便下面循环时跳出
  30.                     string url = Server.MapPath("~/config/Flow_Check_Panel_Config.xml");
  31.                     XmlDocument xmlDoc = new XmlDocument();
  32.                     xmlDoc.Load(url);
  33.                     string FlowContentContinue = xmlDoc.SelectNodes("root/FlowContentContinue").Item(0).InnerText.ToString();
  34.                     if (FlowContentContinue.Trim() != "")
  35.                     {
  36.                         string[] FlowContentContinueArr = FlowContentContinue.Split('|');
  37.                         FlowContentContinue = "";
  38.                         if (FlowContentContinueArr.Length > 0)
  39.                         {
  40.                             FlowContentContinue += "  and  (";
  41.                             for (int fcca = 0; fcca < FlowContentContinueArr.Length; fcca++)
  42.                             {
  43.                                 if (FlowContentContinueArr[fcca].ToString().Trim() == "")
  44.                                 {
  45.                                 }
  46.                                 else
  47.                                 {
  48.                                     // &#160;&#160; 最后一个
  49.                                     if (FlowContentContinueArr.Length == (fcca + 1))
  50.                                     {
  51.                                         FlowContentContinue += "   tab4.StepName not like '%" + FlowContentContinueArr[fcca] + "%' ";
  52.                                     }
  53.                                     else
  54.                                     {
  55.                                         FlowContentContinue += "   tab4.StepName not like '%" + FlowContentContinueArr[fcca] + "%'  or";
  56.                                     }
  57.                                 }
  58.                             }
  59.                             FlowContentContinue += "  ) ";
  60.                         }
  61.                     }
  62.                     #endregion
  63.                     args.Data = new ProjectManage.Common.SQLWhere().GetDataBySQL(@"select tab1.PostilContent,tab1.PostilDate,tab2.RealName,tab4.StepName,tab1.Docid,tab5.OrganizationName
  64. ,tab3.FlowID,tab1.StepID ,(case ISNULL(tab1.PostilType,0)  when 0 then '待办理'
  65. when 1 then '待办理'
  66. when 2 then '回退'
  67. when 3 then '办理完成'
  68. when 4 then '拒绝'  end) '审批意见'
  69. from Flow_PostilNew  as tab1 left join Sys_User as tab2 on tab1.PostilerID=tab2.ID
  70. left join Flow_Document as tab3 on tab1.DocID=tab3.ID
  71. left join Flow_Step as tab4 on tab3.FlowID=tab4.FlowID and tab1.StepID=tab4.StepID
  72. left join dbo.Sys_User_Organization as tab6 on tab6.Sys_User_ID=tab2.ID
  73. left join Sys_Organization as tab5 on tab5.ID=tab6.Sys_Organization
  74. where  tab1.Docid=(select FlowDocumentID from IOT_Bidding_Document where  ID=" + TextBox_ID.Text.ToString() + ")  " + FlowContentContinue + "  and isnull(tab1.StepID,0)>1  order by tab1.StepID asc").Tables[0];
  75.                 }
  76.                 if (args.DataSetName == "DataSet3")
  77.                 {
  78.                     args.Data = new ProjectManage.Common.SQLWhere().GetDataBySQL(@"select * from IOT_Adjunct where tableName='IOT_Bidding_Document' and tableid=" + TextBox_ID.Text.ToString()).Tables[0];
  79.                 }
  80.             }
  81.         }
复制代码

评分

参与人数 1金币 +999 收起 理由
frank.zhang + 999 代码详细

查看全部评分

回复 使用道具 举报
frank.zhang
社区贡献组   /  发表于:2015-12-7 13:35:00
地板
感谢您解决问题后对我们反馈,给您分发 1000 金币。可以用于兑换论坛奖品。
金币规则:点击进入
礼品列表:点击进入
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部