将两个或多个 Crystal Reports 合并为一个 PDF

2023-11-24

我有一个复选框列表。如果我选择两个或多个值,则 CheckBoxList SelectedValues 将作为参数一一传递,并且我想为每个 SelectedValue 生成 PDF 格式的 Crystal Report,并且我想将所有 Crystal Report PDF 格式合并为单个 PDF格式。如何实现这一目标? 到目前为止,我只生成了一个 PDF 格式的 Crystal Report。 在下面,我给出了关于如何生成 PDF 格式的水晶报表的代码。

CrystalDecisions.CrystalReports.Engine.ReportDocument rpt =
    new CrystalDecisions.CrystalReports.Engine.ReportDocument();

string conn = ConfigurationManager.ConnectionStrings["ConnectionString"].ToString();
string[] str = conn.Split(';');
string server = str[0].Substring(str[0].IndexOf(" = ") + 3);
string database = str[1].Substring(str[1].IndexOf(" = ") + 3);
string userid = str[2].Substring(str[2].IndexOf(" = ") + 3);
string password = "Welc0me";//str[3].Substring(str[3].IndexOf(" = ") + 3);

rpt.Load(Server.MapPath(RepPath));

for (int i = 0; i < rpt.DataSourceConnections.Count; i++)
{
   rpt.DataSourceConnections[i].SetConnection(server, database, userid, password);
}
// Here ReleaseID will be replaced by the CheckBoxList's SelectedValue
rpt.SetParameterValue(0, ReleaseID);  
rpt.SetParameterValue(1, false);                         
rpt.ExportToHttpResponse(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat,
    HttpContext.Current.Response, true, "Docs Report");

但上面的代码只是一次生成一个pdf报告。但我想将每个 CheckBoxList 选定值作为参数传递。例如,如果我选择了三个值,那么Crystal Report应该一一包含所有三个Crystal Report对应的SelectedValue。 如何将所有 PDF Crystal Report 合并为单个 Crystal Report。我必须解决这个问题。请帮我。


水晶报表是meant每条记录生成一页。您只需设置一个包含多行数据的数据源,为您的报告设置该数据源并将其直接导出为 pdf(已“合并”)。

首先,您必须使用您的数据创建一个数据源。例如,您可以使用 Visual Studio 设计器创建数据集。更多信息here.

然后您必须设置水晶报表的数据源。您可以使用 Crystal 设计器来完成。

然后在运行时,您只需使用与所有选定复选框相关的数据填充 rpt,并将其导出为 pdf。在 .rpt 文件内,在与复选框相关的特定列上创建一个组,并在该组上设置“分页符”选项。这将生成一个包含所有记录的 Pdf 文件,每页 1 个。

这是示例代码:

            using (var reportDocument = new ReportDocument())
        {
            var datasource = new Datasource { EnforceConstraints = false };

            var adapter = new adoTableAdapter { Connection = ConfigurationManager.ConnectionStrings["ConnectionString"]) };
            adapter.Fill(datasource.ado);

            reportDocument.Load(RptPath);
            reportDocument.SetDataSource(datasource);

            PageMargins myMargins = reportDocument.PrintOptions.PageMargins;
            myMargins.topMargin = Settings.Default.DefaultTopMargin;
            myMargins.leftMargin = Settings.Default.DefaultLeftMargin;
            reportDocument.PrintOptions.ApplyPageMargins(myMargins);
            reportDocument.PrintOptions.PaperSize = PaperSize.PaperA5;
            reportDocument.PrintOptions.PaperOrientation = PaperOrientation.Landscape;

            reportDocument.ExportOptions.ExportDestinationType = ExportDestinationType.DiskFile;
            reportDocument.ExportOptions.ExportFormatType = ExportFormatType.PortableDocFormat;
            reportDocument.ExportOptions.DestinationOptions = new DiskFileDestinationOptions { DiskFileName = PdfFilename };
            reportDocument.ExportOptions.FormatOptions = new PdfRtfWordFormatOptions();

            reportDocument.Export();
        }

在此代码中,dsEtiqueta 是 ADO 数据源,RptPath 是 *.rpt 报告文件的路径,pdf 文件名是使用 timeSpan 生成的。这是我的项目中所需要的,但请随意调整它以满足您的需求。

编辑:用 VS 2010 的 CR 完成。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将两个或多个 Crystal Reports 合并为一个 PDF 的相关文章

随机推荐

  • 使用 CALayer 突出显示 UITextView 中跨多行的文本

    这是一个延续获取 UITextView 中文本的 CGRect 以便使用 CALayer 突出显示 我无法为每个行片段中的范围获取正确的矩形 NSString searchString Returns the range of charac
  • Python:可变长度元组

    Python 3 1 我正在跟进元组应该具有已知长度的设计概念 请参阅这条评论 并且在大多数情况下 未知长度的元组应替换为列表 我的问题是在什么情况下我应该偏离该规则 例如 我知道从字符串和数字文字创建元组比列表更快 请参阅另一条评论 因此
  • ListView Final Column Autosize 创建滚动条

    我正在实现一个派生自 ListView 的自定义控件 我希望最后一列填充剩余空间 这是一个很常见的任务 我已经通过重写 OnResize 方法来解决这个问题 protected override void OnResize EventArg
  • 工具栏中图标和标题之间的填充/空格(Android 24)

    使用新的Android 24 我发现图标和标题Toolbar有更宽的填充 我找不到任何方法来解决这个问题 Example MainActivity java public class MainActivity extends AppComp
  • 无法编译SSIS组件; Visual Studio 2008 中缺少程序集

    SSIS 中没有通过 HTTP 下载文件的标准控制流任务 我尝试过一些解决方法 执行进程 wget 脚本任务 HttpClientConnection 但得出的结论是 执行此任务的最可靠且可重用的方法是创建自定义组件 我尝试通过以下方式做到
  • Python正则表达式使用点或逗号作为分隔符来表示带或不带小数的数字?

    我正在学习正则表达式 现在我正在尝试匹配一个或多或少代表这一点的数字 zero or more numbers possibly a dot or comma zero or more numbers 没有点或逗号也可以 所以它应该匹配以下
  • 如何使用 JMeter 测试 WCF Web 服务?

    我有一个托管在 IIS 上的 WCF Web 服务 它公开了一个采用三个整数参数的方法 我有一个简单的基于控制台的客户端 可以调用此方法 int InsertNewOrder short quantity int custID int pr
  • ASP.NET MVC 中的替代用户管理

    我正处于新 ASP NET MVC 应用程序的规划阶段 要求之一是存储一些用户信息 这些信息不属于 ASP NET MVC 附带的 User 类中的标准集 我想这可以归结为两个问题 1 我可以编辑已经使用的类来存储我需要的信息吗 2 如果我
  • JavaScript 中的“未捕获类型错误:对象不是函数”

    我无法理解为什么这不起作用 我的表单上有两个字段 当我单击按钮时 另一个文本字段值将更改为该函数的值 我怎样才能让它发挥作用 function calculate var odometerStart parseFloat document
  • 在 VBA 中查找 Excel 工作表的底部

    我想选择工作表的底部 但不要选择在使用 存储的内容下方 我可能有 10 000 行 但肯定没有 65 536 行 我不会提前知道有多少行 在 Excel 本身中 无论如何 在最近的版本中 Excel 97 就不那么友好了 您可以按 Ctrl
  • 带有注释的漂亮打印的 haskell 源代码

    我正在尝试重新格式化 重新打印 haskell 源代码 删除 添加空格 换行符 更改缩进样式 我已经找到包裹了Haskell src exts它可以解析并漂亮地打印 haskell 源代码 使用功能parseFileWithComments
  • C++。加权 std::shuffle

    有没有一种方法可以使用标准库进行漂亮而优雅的加权洗牌 有std discrete distribution 我想要的是这样的 std vector
  • CSS 类选择器样式未应用于 React 项目

    使用 Webpack 开发 React 项目 在 style css 中添加一些样式并导入到组件中import style from style css 添加没有选择器的元素 例如body div 风格很好 但我遇到了课程问题 设置类名与
  • Spring WebClient - 如何处理错误场景

    我们正在使用org springframework web reactive function client WebClient with reactor netty http client HttpClient作为 Spring 5 1
  • 如何获取 Vue 更新钩子中的更改?

    如果我有一个像这样的 Vue 组件 有没有办法获得导致更新的更改 就像如何watch钩子接受前一个和下一个数据的参数吗 watch someProp next prev you can compare states here React 似
  • Document.getElementById() 返回名称等于指定 id 的元素

    我之前曾在this SO关于 IE6 7 以及某些版本的 Opera 的有趣行为document getElementById可以找到一个元素 其name属性已定义 但未定义id属性 使得 function f document getEl
  • Angular Universal - 排除路线

    是否可以对某些路线不使用角度通用 我想对我的静态页面使用角度通用 当我登录我的应用程序时 我不想使用它 我想用 app 排除路由 请问我该怎么做 非常感谢 这是我的 server ts These are important and nee
  • Raspberry Pi 上的 crontab 无法播放音频

    我正在尝试让我的 Raspberry Pi 当前连接到蓝牙扬声器 以便每天按计划播放音频文件 其中我的cron工作正在更新中 daily获得新的时间 这基本上是祈祷的召唤 crontab l daily home pi athan upda
  • 来电屏幕上的活动弹出窗口

    我正在尝试覆盖来电屏幕 我知道我无法更改它 所以我正在尝试在顶部弹出一个活动 我的代码工作正常 除非手机闲置了几分钟 My code AndroidManifest xml
  • 将两个或多个 Crystal Reports 合并为一个 PDF

    我有一个复选框列表 如果我选择两个或多个值 则 CheckBoxList SelectedValues 将作为参数一一传递 并且我想为每个 SelectedValue 生成 PDF 格式的 Crystal Report 并且我想将所有 Cr