zysdcyymyw 发表于 2020-4-27 10:02:55

C# WinForm 如何实现传递不同参数批量打印同一报表文件

报表中设置了一个订单号参数
现需要实现根据队列中的多个订单编号逐个生成报表并打印(打印完第一个继续打印第二个, 每次传递不同的参数)
打印过程中不显示预览界面, 最好能获得打印的进度

请教下应该如何实现?


KearneyKang 发表于 2020-4-27 10:02:56

打印的后台设置private void tsbPrint_Click(object sender, EventArgs e)
      {
            string file_name = @"..\..\RdlReport1.rdlx";
            GrapeCity.ActiveReports.PageReport pageReport = new GrapeCity.ActiveReports.PageReport(new System.IO.FileInfo(file_name));
            pageReport.Document.LocateDataSource += new LocateDataSourceEventHandler(LocateData);
            pageReport.Document.Printer.DefaultPageSettings.Margins.Bottom = 0;
            pageReport.Document.Printer.DefaultPageSettings.Margins.Left = 0;
            pageReport.Document.Printer.DefaultPageSettings.Margins.Right = 0;
            pageReport.Document.Printer.DefaultPageSettings.Margins.Top = 0;         
            pageReport.Document.Printer.PaperSize.RawKind = 0;
            pageReport.Document.Printer.PaperSize.Width = 14;
            pageReport.Document.Printer.PaperSize.Height = 20;
            pageReport.Document.Printer.PrinterName = "打印机名";
            GrapeCity.ActiveReports.PrintExtension.Print(_document, true, true);

         }

KearneyKang 发表于 2020-4-27 14:12:56

您好,你的需求是这样的是吧,有多个订单,然后打印的时候想一页纸张打印一个订单的信息,然后连续打印是这样吗?如果是这样
首先你要知道报表打印的结果跟预览展示的结果是一样的,虽然你这里没有预览,但是你设计的报表进行展示的时候应该也符合这个规则。
建议使用页面报表,然后利用页面报表的分组的功能,根据你说的订单号进行分组,就能一页展示一个订单的信息,有多少个订单就会连续打印多少。具体可以参考模板库里的这张报表


zysdcyymyw 发表于 2020-4-27 14:25:51

不是每页纸张一个订单, 我这边每个订单对应着一个报表文件, 其中包括多个子页面, 且页数是和订单下的详单数据相关的
现在需要实现的是每个参数值打印一套报表, 在打印完一套之后继续打印下一套

KearneyKang 发表于 2020-4-27 14:31:50

那你现在报表设计预览展示的时候是这样展示的不,因为报表打印的样式跟预览的结果是一样的,建议你看看预览时候的样式展示。

zysdcyymyw 发表于 2020-4-27 14:56:23

预览的时候是能显示单个订单下的这一套报表的, 现在的问题主要是怎样通过 C# 代码控制报表控件逐个生成报表并打印, 例如队列中有三个订单ID
需要实现的功能即:
   1. 使用第一个订单ID作为报表参数渲染第一个订单的整套报表
   2. 打印第一个订单的报表
   3. 根据打印进度(第几页或者百分比)显示提示界面
   4. 第一个订单打印完成
   5. 使用第二个订单ID渲染第二个订单的报表, 如此循环直到队列中的全部订单ID都打印完成时触发事件回报状态
每次渲染和打印的报表都来自同一个报表文件
需要了解的接口:
   1. 获得Viewer是否加载完成(主动查询或回调)
   2. 打印Viewer中的报表
   3. 获得当前正在打印的页数以及当前报表的总页数(主动查询或回调)
   4. 获得打印是否完成(主动查询或回调)
页: [1]
查看完整版本: C# WinForm 如何实现传递不同参数批量打印同一报表文件