65.9K
CodeProject 正在变化。 阅读更多。
Home

使用 Microsoft Report (RDLC) 导出到 Word/PDF,无需使用 Report Viewer。

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.71/5 (5投票s)

2012 年 11 月 12 日

CPOL

2分钟阅读

viewsIcon

121958

downloadIcon

5863

在本文中,我们将学习如何使用 Microsoft Report (RDLC) 将数据导出到 WORD 文档或 PDF 文件,而无需使用 Report Viewer。

介绍 

有时我们需要直接将数据以 WORD/PDF 格式导出,而无需在页面上显示数据作为报表。在本文中,我们将为员工创建一个示例工资单 Word/PDF 文件。Word 文档的每一页将包含员工列表中的相应员工的工资单。我们会使用 Microsoft Report Viewer,因为我们不在页面上显示数据。

使用代码 

在 Microsoft Visual Studio 2010 中创建一个新的网站。向网站添加一个新的类,并将其命名为 Employee。将以下代码添加到 Employee 类中。 

public class Employee
{
    public string Name { get; set; }
    public float Salary { get; set; }
    public string EmployeeID { get; set; }
    public string Designation { get; set; }
}

向项目添加一个新的类,并将其命名为“EmployeeRepository”。这将作为我们项目的 DataSource。将以下代码添加到 EmployeeRepository 类中。

public static class EmployeeRepository
{
    public static List<Employee> GetAllEmployees()
    {
        Employee employee1 = new Employee {Name="Satyaki Mishra", 
           EmployeeID="H0090", Designation="Software Engineer", Salary=10000 };
        Employee employee2 = new Employee { Name = "Raman Saha", 
           EmployeeID = "A0090", Designation = "Test Lead", Salary = 15000 };
        Employee employee3 = new Employee { Name = "Purab Dash", 
           EmployeeID = "ZD120", Designation = "Sr.Software Engineer", Salary = 13000 };
        return new List<Employee> { employee1, employee2, employee3 };
    } 
}

向网站添加一个新的报表,该报表可以在“添加新项目”窗口的“报表”部分找到。双击解决方案资源管理器中的 RDLC 文件以打开设计视图。通过单击“报表数据”部分中的“新建”菜单,向报表中添加一个新的数据集。在“数据集属性”窗口中,从 DataSource 下拉列表中选择 DataSource。在 DataSource 下拉列表中,项目命名空间已经填充。从下拉列表中选择 DataSource,或通过单击“新建”按钮创建新的 DataSource。在下一个下拉列表中选择所需的数据集。选择数据集后,数据集中的可用字段将填充在右侧列表中。单击“确定”以创建数据集。

现在让我们设计我们的报表。我们将设计我们的报表以获取一个 Word 文档,其中每一页包含员工列表中的员工工资单。右键单击报表区域以向报表中添加一个列表(插入>列表)。我们使用了列表,因为我们需要获取员工列表中的所有员工的报表。从工具箱中拖动一些文本框并将其放置到列表中。右键单击文本框并单击“表达式”。在左侧面板的“类别”部分中,单击“数据集”。从“值”部分中选择所需的值。

将 Microsoft.ReportViewer.WebForms 引用添加到项目中。在代码隐藏文件的 page_load 事件中添加以下代码。

protected void Page_Load(object sender, EventArgs e)
{
    LocalReport report = new LocalReport();
    report.ReportPath = "Report1.rdlc";
    ReportDataSource rds = new ReportDataSource();
    rds.Name = "DataSet1";//This refers to the dataset name in the RDLC file
    rds.Value = EmployeeRepository.GetAllEmployees();
    report.DataSources.Add(rds);
    Byte[] mybytes = report.Render("WORD");
    //Byte[] mybytes = report.Render("PDF"); for exporting to PDF
    using (FileStream fs = File.Create(@"D:\SalSlip.doc"))
    {
        fs.Write(mybytes, 0, mybytes.Length);
    }
}  

运行应用程序时,您可以在 D: 驱动器中找到保存的 Word 文档。

编码愉快!!!

© . All rights reserved.