翼度科技»论坛 编程开发 .net 查看内容

用C#生成多个Telerik Report PDF

4

主题

4

帖子

12

积分

新手上路

Rank: 1

积分
12
1.创建一个新的WinForms或WPF应用程序,具体取决于您的需要。
2.将Telerik Reporting组件添加到您的应用程序中。您可以通过NuGet包管理器来完成此操作。
3.在您的应用程序中添加多个报表文件。您可以使用Telerik Report Designer创建报表并将其添加到您的应用程序项目中。确保为每个报表定义一个唯一的名称。
4.创建一个C#方法来生成PDF。该方法应该类似于以下示例代码:
  1. public static void GenerateReport(string reportName)
  2. {
  3.     Telerik.Reporting.Report report = ReportResolver.Resolve(reportName);
  4.     Telerik.Reporting.Processing.ReportProcessor reportProcessor = new Telerik.Reporting.Processing.ReportProcessor();
  5.    
  6.     Telerik.Reporting.Processing.RenderingResult result = reportProcessor.RenderReport("PDF", report, null);
  7.    
  8.     string fileName = "output_" + reportName + ".pdf";
  9.     string filePath = AppDomain.CurrentDomain.BaseDirectory + fileName;
  10.    
  11.     using (FileStream fs = new FileStream(filePath, FileMode.Create))
  12.     {
  13.         fs.Write(result.DocumentBytes, 0, result.DocumentBytes.Length);
  14.     }
  15. }
复制代码
此方法将根据报表名称生成PDF文件,并将其保存到应用程序的基本目录中。
5.使用该方法生成所有报表的PDF。以下是一个示例方法来遍历所有报表并生成它们的PDF:
  1. public static void GenerateAllReports()
  2. {
  3.     string[] reportNames = new string[] { "report1", "report2", "report3" };
  4.    
  5.     for (int i = 0; i < reportNames.Length; i++)
  6.     {
  7.         GenerateReport(reportNames[i]);
  8.     }
  9. }
复制代码
此方法将遍历所有报表名称,并对每个报表调用GenerateReport方法来生成相应的PDF。
6.最后,您可以在应用程序的UI中提供适当的UI元素或逻辑来触发报表生成过程。
希望这些步骤对您有所帮助,让您成功地使用C#生成多个Telerik Report PDF。
 
二.Telerik Reporting ReportBook是另一种生成多个PDF文件的方法。

ReportBook是一个特殊的Telerik报表,它由多个子报表组成,可将它们合并成单个PDF输出。

下面是一个使用ReportBook生成多个PDF文件的简单示例:
  1. using System;
  2. using System.IO;
  3. using Telerik.Reporting;
  4. using Telerik.Reporting.Processing;
  5. namespace PDFGenerator
  6. {
  7.     class Program
  8.     {
  9.         static void Main(string[] args)
  10.         {
  11.             // 创建包含多个报表的ReportBook
  12.             ReportBook reportBook = new ReportBook();
  13.             // 添加要生成的所有子报表
  14.             reportBook.ReportSources.Add(new UriReportSource() { Uri = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "report1.trdp") });
  15.             reportBook.ReportSources.Add(new UriReportSource() { Uri = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "report2.trdp") });
  16.             reportBook.ReportSources.Add(new UriReportSource() { Uri = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "report3.trdp") });
  17.             // 遍历所有子报表,生成一个包含每个子报表的PDF文件
  18.             for (int i = 0; i < reportBook.ReportSources.Count; i++)
  19.             {
  20.                 // 获取子报表的报表实例
  21.                 Report report = (new InstanceReportSource() { ReportDocument = reportBook.Reports[i] }).ReportDocument;
  22.                 // 生成子报表的PDF文件
  23.                 ReportProcessor reportProcessor = new ReportProcessor();
  24.                 RenderingResult result = reportProcessor.RenderReport("PDF", report, null);
  25.                 byte[] pdfBytes = result.DocumentBytes;
  26.                 // 将生成的PDF保存到文件
  27.                 string fileName = $"report_{i + 1}.pdf";
  28.                 string filePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, fileName);
  29.                 File.WriteAllBytes(filePath, pdfBytes);
  30.             }
  31.         }
  32.     }
  33. }
复制代码
 

来源:https://www.cnblogs.com/tx1185498724/archive/2023/04/03/17282477.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

举报 回复 使用道具