使用 C# 以 PDF 形式动态存储和发送 SSRS 报告

2024-04-22

我在 SSRS 中有一份报告,它以 a 作为参数SalesRepCode and Email生成 PDF 收据。如果我使用报告查看器,它就会正常工作。

使用 C#,我想为每个存在的销售代表自动生成 PDF,一旦呈现 PDF,我想将其存储在文件夹中,然后将其作为电子邮件附件发送。

我查看了MSDN文档ReportingService2005类,但这指的是2005年版本,我正在使用SSRS 2012,但我仍然没有找到与我正在使用的版本相关的东西。

有没有正确的方法来实现这一点?


您可以使用Render https://msdn.microsoft.com/en-us/library/reportexecution2005.reportexecutionservice.render.aspx的方法报告执行服务 https://msdn.microsoft.com/en-us/library/reportexecution2005.reportexecutionservice.aspx没有任何问题。您需要添加服务引用报告执行2005 https://msdn.microsoft.com/en-us/library/reportexecution2005.aspx哪一个是执行端点 https://msdn.microsoft.com/en-us/library/ms155398.aspx#Anchor_1报表服务器的。

Example

下面的示例取自 msdn,并进行了一些小的更改。要查看原始示例,请查看msdn 示例 https://msdn.microsoft.com/en-us/library/reportexecution2005.reportexecutionservice.render.aspx#Anchor_2。使用时注意使用PDF作为格式以及关于报告路径,它应该是报告的路径,开头为/并以报告名称结尾,不带.rdl.

ReportExecutionService rs = new ReportExecutionService();
rs.Credentials = System.Net.CredentialCache.DefaultCredentials;
rs.Url = "http://MyServer/reportserver/ReportExecution2005.asmx";
/* Render arguments */
byte[] result = null;
string reportPath = "/MyFolder/MyReport"; 
string format = "PDF";
string historyID = null;
string devInfo = @"<DeviceInfo><Toolbar>False</Toolbar></DeviceInfo>";          
/* Prepare report parameter.*/
ParameterValue[] parameters = new ParameterValue[1];
parameters[0] = new ParameterValue();
parameters[0].Name = "SomeParameter";
parameters[0].Value = "SomeValue";
DataSourceCredentials[] credentials = null;
string showHideToggle = null;
string encoding;
string mimeType;
string extension;
Warning[] warnings = null;
ParameterValue[] reportHistoryParameters = null;
string[] streamIDs = null;
ExecutionInfo execInfo = new ExecutionInfo();
ExecutionHeader execHeader = new ExecutionHeader();
rs.ExecutionHeaderValue = execHeader; 
/*Load and Render Report*/
execInfo = rs.LoadReport(reportPath, historyID);
rs.SetExecutionParameters(parameters, "en-us");
String SessionId = rs.ExecutionHeaderValue.ExecutionID;
result = rs.Render(format, devInfo, out extension, out encoding, 
    out mimeType, out warnings, out streamIDs);
execInfo = rs.GetExecutionInfo();
/*Save File*/
System.IO.File.WriteAllBytes(@"d:\report.pdf", result);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 C# 以 PDF 形式动态存储和发送 SSRS 报告 的相关文章

  • C# Socket.receive连续接收0字节且循环中不阻塞

    我正在尝试用 C 编写一个最简单的多线程 TCP 服务器 它接收来自多个客户端的数据 每次连接新客户端时 都会建立套接字连接 并将套接字作为参数传递给新类函数 之后运行 while 循环并接收数据 直到客户端连接为止 这里的问题是 sock
  • 在运行时配置 ASP.NET 会话状态

    我们有一个使用 SQL Server 会话状态的 ASP NET 网站 状态配置在Web config like
  • 如何解决“HTTP 错误 404.3 - 未找到”错误?

    简单的问题 我启动 VS2008 并创建一个新的 WCF 服务应用程序 这将创建一个默认应用程序 并使用一些测试方法来显示它的工作原理 我按 CTRL F5 确实有效 伟大的 但是 它使用 Visual Studio 开发服务器 我不想支持
  • Linux 缓冲区溢出环境变量

    我一直在审查不同类型的缓冲区溢出 并遇到了一个我不记得为什么会发生的问题 下面的代码是我尝试执行缓冲区溢出的程序 include
  • 正确别名向量

    我无法在其他地方找到答案 所以我想我只需要问这个 我正在尝试获取向量 其中存储 int 指针 的别名 如下所示 void conversion Engine ENGINES The Engine class has a vector of
  • 将 CryptoStream 解密为 MemoryStream

    我编写了一个过程 其中文件被加密并上传到 Azure 然后必须解密下载过程 这会失败并出现 填充无效且无法删除 错误 或 要解密的数据长度为无效的 错误 我在网上尝试了很多解决方案 包括C 使用 RijndaelManaged 和 Cryp
  • 如何设置属性选择器的值 Expression>

    我需要使用模式工厂的想法将 Person 类实体中的实体属性 Address 与 FactoryEntities 类中的表达式 linq 相关联 看看这就是我所拥有的并且我想要做的 Address address new Address a
  • 在 WinForms 中显示输入对话框

    我想在我的 WinForm 应用程序中显示输入模式 我浏览过网络 但没有找到执行此操作的良好模式 我知道我必须创建另一个表单 并使用 ShowDialog 方法 你是对的 请注意 模式对话框在关闭时不会自动处理 与非模式对话框不同 因此您需
  • 在 C++ 中重用异常处理代码

    我有这两个函数 具有重复的异常处理 其唯一目的是显示错误消息 void func1 noexcept try do task do another task catch const std out of range e show msg O
  • 如何创建 .bat 文件来运行 C# 代码?

    我需要的是 我有一个 C 代码 我想构建它以便在桌面上创建一个 bat 文件 因此 当我从桌面运行这个 bat 文件时 它应该执行 C 代码 有没有办法在编译之前更改 c 项目的设置或属性 以便创建应运行此 c 代码的 bat 文件 将 C
  • C# 中的异步方法如何工作?

    我在我的一些项目中使用异步方法 我喜欢它 因为它使我的应用程序更具可扩展性 但是 我想知道异步方法如何在后台真正工作 NET 或 Windows 如何知道调用已完成 根据我进行的异步调用的数量 我可以看到创建了新线程 但并不总是 为什么 此
  • 这个对象的内存会是什么样子?

    我想知道这个类 它的对象 的内存布局是什么样的 class MyClass string myString int myInt public MyClass string str int i myString str myInt i MyC
  • 委托:方法名称预期错误

    我正在尝试让以下简单的委托示例正常工作 根据我从中取出的一本书 应该没问题 但我得到了Method name expected error namespace TestConsoleApp class Program private del
  • 验证仅适用于数组的第一项

    给定这个模型代码 Required Display Name Name public string Name get set 以下查看代码有效 Html LabelFor model gt model Name Html TextBoxFo
  • 二叉树实现C++

    二叉树插入 include stdafx h include
  • 为什么这是一个未定义的行为?

    我的回答这个问题 https stackoverflow com q 18706587 845092这个函数是 inline bool divisible15 unsigned int x 286331153 2 32 1 15 40086
  • C# 中的自定义按钮:如何删除悬停背景?

    我正在尝试使用 Visual Studio 2005 对我的表单 其 FormBorderStyle none 执行自定义按钮 我在链接到该按钮的 ImageList 中有我的 3 种状态按钮图像 this btnClose AutoSiz
  • 如何避免函数的多重定义(Linux、GCC/G++、Code::Blocks)

    我有一个代码块项目 它使用许多不同的文件 通常是由其他程序员编写的 目前我遇到的情况是 我有两个不同的子项目 其中包含以相同方式命名的函数 比方说 F int x 因此 F int x 是在两个不同位置的两个源文件中定义的 并且它们有两个不
  • 为什么我能够使用无效的类指针进行函数调用

    在下面的代码片段中 虽然指针未初始化 但调用仍然成功 temp ptr ptr gt func2 是C 语言特性的问题 还是VC 6编译器的作弊 class temp public temp a 9 int func1 return a b
  • 我如何将 C++ 与 VALA 混合起来

    我需要用 C 编写跨平台的 GUI 应用程序 但由于 C 的大多数 GUI 库都有点乏味 而且我对 C NET 非常熟悉 我发现使用 GTK 的代码 Vala 代码非常有趣 并且与其他方式相比有点容易 那么我该如何将 VAlA 与 C 混合

随机推荐

  • 为什么 TypeSynonymInstances 不允许在实例头中使用部分应用的类型同义词?

    我知道TypeSynomymInstances 只允许在实例头中使用完全应用的类型同义词 http hackage haskell org trac haskell prime wiki TypeSynonymInstances 但如果我也
  • 从数组中打印素数

    我想用方法从数组中打印出所有素数 我可以用一个 int 来完成 但不知道如何从数组中返回某些数字 感谢帮助 public static boolean isPrime int tab boolean prime true for int i
  • Xcode 11.4 / iOS13.3.1 无法检查应用程序包

    Details Unable to install wtsp ios Domain com apple dt MobileDeviceErrorDomain Code 402653103 Could not inspect the appl
  • javascript 无法在 IE9 中调用

    我创建了一个文本框并写道onfocus getFocus 现在我用javascript编写了函数 function getFocus alert Hello I Got Focus 问题是在 IE8 中它工作得很好 但在 IE9 中警报没有
  • 如何禁用 IE8 中文本区域的默认滚动条?

    我正在浏览一些旧网站 其中有一个联系表单 并且在 IE8 中 即使没有内容 我的文本区域也始终会显示一个垂直滚动条 在 Firefox 中 直到文本区域中的内容达到认为有必要的高度时 它似乎才会使垂直滚动条存在 我在旧网站上设置了输入框的样
  • 将 NSArray 转换为 NSMutableArray [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 如上 了解一下会有帮助的 谢谢 这里有两个选项 NSMutableArray createMutableArray1 NSArray ar
  • 它当前正被另一个 Gradle 实例使用

    我想做一些基本的功能 我正在命令行中运行 构建它 我指的是用户指南 http www gradle org docs current userguide userguide html 并且 做一些简单的任务 当我开始运行简单任务时 它已成功
  • 从线程接收数据后pyqt主窗口不断崩溃

    我有一个 QMainWindow 启动 QThread 并等待来自网络的数据 当收到任何数据时更新 UI 问题是 它有时会崩溃 有时不会 我所做的就是启动它并等待数据 这是线程类 class ListenerThread QtCore QT
  • 将多选列表框中的 SelectedItems 与 ViewModel 中的集合同步

    我在使用 prism 的 SL3 应用程序中有一个多选列表框 并且我的视图模型中需要一个集合 其中包含列表框中当前选定的项目 视图模型对视图一无所知 因此它无法访问列表框控件 另外 我需要能够从视图模型中清除列表框中的选定项目 不知道如何解
  • 符号查找错误未定义符号,但所有符号似乎都存在

    可执行文件似乎无法解析链接库中的符号 LD DEBUG libs 的相关输出表明加载了正确的库 6557 usr lib libcharon so 0 error symbol lookup error undefined symbol a
  • 使用 ngx-mat-file-input 从 Angular 将文件上传为 multipart/form-data

    我在用着ngx mat file input 0 检索用户输入的文件 我想将其上传到服务器 端点需要一个多部分文件 我怎样才能做到这一点 0 https www npmjs com package ngx material file inp
  • 内置模块计算最小公倍数

    我目前正在使用一个接受两个数字并使用循环来查找这些数字的最小公倍数的函数 def lcm x y This function takes two integers and returns the L C M Choose the great
  • MySQL order by 在 group by 之前

    这里有很多类似的问题 但我认为没有一个能充分回答这个问题 我将从当前最流行的继续question https stackoverflow com questions 5140785 mysql order before group by如果
  • ANTLR“无法启动调试器。等待连接到远程解析器超时。”

    我在 AntlrWorks 中运行的 ANTLR 语法之一抛出 无法启动调试器 等待连接到远程解析器超时 过去 此消息通常会消失 但此消息会持续存在 在搜索 ANTLR 列表时 例如http www antlr org pipermail
  • 将 A => M[B] 转换为 M[A => B]

    对于一个单子M 是否可以转A gt M B into M A gt B 我尝试过遵循这些类型 但没有成功 这让我认为这是不可能的 但我想我还是会问 另外 搜索 Hooglea gt m b gt m a gt b 没有返回任何东西 所以我没
  • Perl:函数参数不足

    我是 Perl 的新手 目前正在尝试理解提到的错误消息 我有这段代码 仍然主要用于测试目的 usr bin perl use strict use warnings my info autor gt Karryanna jazyk gt c
  • Android ACTION_SHUTDOWN 广播不起作用

    Code public class ShutdownReceiver extends BroadcastReceiver private static final String TAG ShutdownReceiver Override p
  • Javascript“this”被事件监听器覆盖[重复]

    这个问题在这里已经有答案了 我可能做错了什么 但在尝试将一些面向对象编程应用于 Javascript 时 我发现了一些有趣的行为 考虑以下 function Bug element this focusedCell null element
  • jquery导航

    我正在为网站登陆页面创建一个简单的导航 它将用户引导到客户业务的两侧之一 基本上包括当您滚动到一侧时屏幕被分成两半 另一侧淡出 My code HTML div a href retail html Retail a a href resi
  • 使用 C# 以 PDF 形式动态存储和发送 SSRS 报告

    我在 SSRS 中有一份报告 它以 a 作为参数SalesRepCode and Email生成 PDF 收据 如果我使用报告查看器 它就会正常工作 使用 C 我想为每个存在的销售代表自动生成 PDF 一旦呈现 PDF 我想将其存储在文件夹