Динамически хранить и отправлять отчеты SSRS в формате PDF с помощью C #
У меня есть отчет в SSRS, который берет в качестве параметра SalesRepCode
и Email
для получения квитанции PDF. Он работает, как и должно быть, если я использую средство просмотра отчетов.
С помощью C # я хотел бы автоматически генерировать PDF-файл для каждого SalesRep, который существует, после того, как PDF-рендеринга, я хотел бы сохранить его в папке, а затем отправить его в виде вложения электронной почты.
Я просмотрел документацию MSDN класса ReportingService2005
, но это относится к версии 2005 года, и я использую SSRS 2012, и я до сих пор не нашел вещи, связанные с используемой версией.
- Почему мои диаграммы не отображаются в SSRS 2012?
- Форматирование цвета SSRS на основе параметра
- Как установить описание папки во время развертывания с помощью Visual Studio?
- Параметры URL-адреса служб отчетов SQL Server не работают
- Как указать, что значение НЕ МЕНЕЕ в параметре
Есть ли способ сделать это возможным?
- Как я могу отобразить зеленую ячейку, если результат верен или изображение зеленого робота, когда результат верен в службах отчетов SQL Server
- Как показать промежуточное и общее количество групп в ssrs
- SQL find Клиенты, с которыми не удалось связаться за последние 45 дней
- Сброс параметров SSRS при изменении параметра даты
- Записи SSRS не отображаются, когда используется (выберите все), но при выборе особого значения
- Параметр SSRS multi-select не может записывать значения с запятой
- Как получить данные из собственной таблицы ссылок в sql
- Подводный отчет не может быть показан. Под-отчет работает отдельно - не с основным докладом
Вы можете использовать метод Render
ReportExecutionService без каких-либо проблем. Вам необходимо добавить ссылку на службу ReportExecution2005, которая является конечной точкой выполнения сервера отчетов.
пример
Ниже приведен пример из msdn и используется некоторыми небольшими изменениями. Чтобы увидеть исходный пример, посмотрите пример msdn . При использовании обратите внимание на использование 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);
Я использовал веб-службу ReportingService2005 с SQL 2012 и отлично работает.
Вкратце – вы добавляете ссылку на веб-службу, Bind Params, Call Render () с PDF и сохраняете ByteStream в качестве локального файла.
Смутно 2 веб-службы (служба отчетов и служба выполнения отчетов)
Я думаю, вы можете уйти, просто используя службу выполнения отчетов.
Первое, что нужно проверить, это увидеть файл .asmx на странице SSRS ( http: //…ReportExecution2005.asmx )