使用IRONPDF

如何在ASP .NET中创建报告

发布 2024年四月3日
分享:

报表对于以结构化和可视化的格式展示数据至关重要。无论是销售数据、分析还是财务摘要,生成报告都是网络应用程序的常见要求。 微软 提供的 rdlc 报告服务可以使用 Web 窗体报告查看器控件集成到网络应用程序中。然而,这一过程往往复杂而耗时。

这就是 IronPDF 的用武之地。IronPDF 是一个多功能库,可简化在 ASP.NET 和其他 Web 框架中生成 PDF 报告的过程,功能强大且易于使用。在本文中,我们将探讨如何使用 IronPDF 在 ASP.NET 中创建报表。

如何在 ASP.NET 中创建报告

1.使用 Visual Studio 创建 ASP.NET 网络应用程序

2.安装 IronPDFIronPDF.Extensions.MVC.Core

3.实例化ChromePdfRenderer对象的发送者

4.调用RenderRazorViewToPdf方法将视图转换为 PDF 文件

5.使用 Response.Headers.Append 添加 "Content-Disposition"(内容处置)。

6.使用File方法用PDF.BinaryData创建报告

IronPDF 简介

IronPDF 是一个多功能库,可简化 ASP.NET 和其他网络框架中 PDF 文档的生成。其丰富的功能集和直观的应用程序接口(API)使其成为希望直接从其网络应用程序中生成动态报告、发票、收据等的开发人员的理想选择。使用 IronPDF,开发人员可以毫不费力地将 HTML、CSS 甚至 Razor 视图转换为高质量的 PDF 文档,从而将报表功能无缝集成到 ASP.NET 项目中。

IronPDF 的功能

  • HTML 至 PDF 转换:轻松将 HTML 内容(包括 CSS 样式)转换为高质量的 PDF 文档。
  • PDF 编辑:通过添加或删除文本、图像和注释来修改现有的 PDF 文档。
  • PDF表格填充:使用网络应用程序中的数据动态填充 PDF 表单。
  • 生成条形码:在 PDF 文档中生成条形码和 QR 码,用于产品标签或库存跟踪。
  • 水印:为 PDF 页面添加水印,以保护敏感信息或品牌文档。
  • 加密和安全:通过加密、密码和权限设置保护 PDF 文档。

先决条件

在我们开始之前,请确保您具备以下先决条件:

  • ASP.NET 开发的基础知识。
  • Visual Studio 已安装在机器上。
  • IronPDF 和 IronPDF.Extensions.Mvc.Core

在 Visual Studio 中创建 ASP.NET 项目的步骤

1.打开 Visual Studio 并创建一个新的 ASP.NET Core 项目。

2.选择所需的项目模板 (例如,MVC 或 Razor 页面).

![如何在 ASP .NET 中创建报告:图 1](/static-assets/pdf/blog/report-asp-net-csharp/report-asp-net-csharp-1.webp)

3.配置项目设置,如项目名称、位置和框架版本。

![如何在 ASP .NET 中创建报告:图 2](/static-assets/pdf/blog/report-asp-net-csharp/report-asp-net-csharp-2.webp)

4.点击 "创建 "生成项目结构。

安装 IronPDF 和 IronPDF.Extensions.Mvc.Core

接下来,让我们使用 NuGet 包管理器安装 IronPDF 及其 MVC 扩展包:

1.右键单击解决方案资源管理器,打开解决方案的 NuGet 包管理器。

2.搜索 "IronPDF"和 "IronPDF.Extensions.Mvc.Core"。

![如何在 ASP .NET 中创建报告:图 3](/static-assets/pdf/blog/report-asp-net-csharp/report-asp-net-csharp-3.webp)

3.将这两个软件包安装到解决方案中。

在 ASP.NET 网络应用程序中创建报告查看器的步骤

现在,让我们深入了解在 ASP.NET 项目中使用 IronPDF 创建 PDF 报告的步骤。在将视图转换为报告之前,我们需要一个模型、视图和控制器来创建一个数据源,用于创建和下载 PDF 格式的新报告。

第 1 步:定义模型类

首先,创建一个模型类 (SalesModel.cs) 来表示销售数据。该示例 SalesModel 类将包含日期、产品名称、数量、单价和总金额等属性。这在从 Microsoft SQL Server 或 MySQL Server 等数据源检索信息时非常有用。

namespace ReportGenerator.Models
{
    public class SalesModel
    {
        public DateTime Date { get; set; }
        public string ProductName { get; set; }
        public int Quantity { get; set; }
        public decimal UnitPrice { get; set; }
        public decimal TotalAmount => Quantity * UnitPrice;
    }
}
namespace ReportGenerator.Models
{
    public class SalesModel
    {
        public DateTime Date { get; set; }
        public string ProductName { get; set; }
        public int Quantity { get; set; }
        public decimal UnitPrice { get; set; }
        public decimal TotalAmount => Quantity * UnitPrice;
    }
}
Namespace ReportGenerator.Models
	Public Class SalesModel
		Public Property [Date]() As DateTime
		Public Property ProductName() As String
		Public Property Quantity() As Integer
		Public Property UnitPrice() As Decimal
		Public ReadOnly Property TotalAmount() As Decimal
			Get
				Return Quantity * UnitPrice
			End Get
		End Property
	End Class
End Namespace
VB   C#

第 2 步:创建新的网络表单视图

接下来,创建一个 Razor 视图 (Sales.cshtml) 以表格形式显示销售数据,并提供生成 PDF 报告的按钮。

<!-- Index.cshtml -->
@model List<SalesModel>
<!DOCTYPE html>
<html>
<head>
    <title>Sales Report</title>
    <style>
        table {
            border-collapse: collapse;
            width: 100%;
        }
        th, td {
            border: 1px solid #dddddd;
            text-align: left;
            padding: 8px;
        }
        th {
            background-color: #f2f2f2;
        }
    </style>
</head>
<body>
    <h2>Sales Report</h2>
    <table>
        <tr>
            <th>Date</th>
            <th>Product Name</th>
            <th>Quantity</th>
            <th>Unit Price</th>
            <th>Total Amount</th>
        </tr>
        @foreach (var item in Model)
        {
            <tr>
                <td>@item.Date.ToShortDateString()</td>
                <td>@item.ProductName</td>
                <td>@item.Quantity</td>
                <td>@item.UnitPrice.ToString("C")</td>
                <td>@item.TotalAmount.ToString("C")</td>
            </tr>
        }
    </table>
    <br />
    @using (Html.BeginForm("GeneratePdf", "Sales", FormMethod.Post))
    {
        <button type="submit">Generate PDF Report</button>
    }
</body>
</html>
<!-- Index.cshtml -->
@model List<SalesModel>
<!DOCTYPE html>
<html>
<head>
    <title>Sales Report</title>
    <style>
        table {
            border-collapse: collapse;
            width: 100%;
        }
        th, td {
            border: 1px solid #dddddd;
            text-align: left;
            padding: 8px;
        }
        th {
            background-color: #f2f2f2;
        }
    </style>
</head>
<body>
    <h2>Sales Report</h2>
    <table>
        <tr>
            <th>Date</th>
            <th>Product Name</th>
            <th>Quantity</th>
            <th>Unit Price</th>
            <th>Total Amount</th>
        </tr>
        @foreach (var item in Model)
        {
            <tr>
                <td>@item.Date.ToShortDateString()</td>
                <td>@item.ProductName</td>
                <td>@item.Quantity</td>
                <td>@item.UnitPrice.ToString("C")</td>
                <td>@item.TotalAmount.ToString("C")</td>
            </tr>
        }
    </table>
    <br />
    @using (Html.BeginForm("GeneratePdf", "Sales", FormMethod.Post))
    {
        <button type="submit">Generate PDF Report</button>
    }
</body>
</html>
HTML

现在,在 "视图"->"共享 "文件夹下的_Layout.cshtml文件中将 "销售 "添加为菜单项,以创建报告向导视图:

<li class="nav-item">
    <a class="nav-link text-dark" asp-area="" asp-controller="Sales" asp-action="Sales">Sales</a>
</li>
<li class="nav-item">
    <a class="nav-link text-dark" asp-area="" asp-controller="Sales" asp-action="Sales">Sales</a>
</li>
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'<li class="nav-item"> <a class="nav-link text-dark" asp-area="" asp-controller="Sales" asp-action="Sales"> Sales</a> </li>
VB   C#

如何在 ASP .NET 中创建报告:图 4

第 3 步:注册视图渲染服务

Program.cs文件中注册视图渲染服务对于依赖注入的正常运行至关重要。在 Program.cs 文件中添加以下代码,以注册 IRazorViewRenderer 服务:

// Register the IRazorViewRenderer service
builder.Services.AddSingleton<IRazorViewRenderer, RazorViewRenderer>();
// Register the IRazorViewRenderer service
builder.Services.AddSingleton<IRazorViewRenderer, RazorViewRenderer>();
' Register the IRazorViewRenderer service
builder.Services.AddSingleton(Of IRazorViewRenderer, RazorViewRenderer)()
VB   C#

第 3 步:实施 Web API 控制器类

实现控制器 (SalesController.cs) 操作,以渲染销售视图并生成 PDF 报告。在控制器构造函数中注入 IronPDF 提供的 IRazorViewRenderer 服务。

using ReportGenerator.Models;
namespace ReportGenerator.Controllers
{
    public class SalesController : Controller
    {
        private readonly IRazorViewRenderer _viewRenderService;
        private readonly List<SalesModel> salesData;
        public SalesController(IRazorViewRenderer viewRenderService)
        {
            _viewRenderService = viewRenderService;
            // Example data with sales information
            salesData = new List<SalesModel>
            {
                new SalesModel { Date = DateTime.Parse("2024-03-01"), ProductName = "Product A", Quantity = 10, UnitPrice = 50.00m },
                new SalesModel { Date = DateTime.Parse("2024-03-02"), ProductName = "Product B", Quantity = 15, UnitPrice = 40.00m },
                new SalesModel { Date = DateTime.Parse("2024-03-03"), ProductName = "Product C", Quantity = 20, UnitPrice = 30.00m }
                // Add more data as needed
            };
        }
        public IActionResult Sales()
        {
        // Renders the data in Sales view
            return View(salesData);
        }
    }
}
using ReportGenerator.Models;
namespace ReportGenerator.Controllers
{
    public class SalesController : Controller
    {
        private readonly IRazorViewRenderer _viewRenderService;
        private readonly List<SalesModel> salesData;
        public SalesController(IRazorViewRenderer viewRenderService)
        {
            _viewRenderService = viewRenderService;
            // Example data with sales information
            salesData = new List<SalesModel>
            {
                new SalesModel { Date = DateTime.Parse("2024-03-01"), ProductName = "Product A", Quantity = 10, UnitPrice = 50.00m },
                new SalesModel { Date = DateTime.Parse("2024-03-02"), ProductName = "Product B", Quantity = 15, UnitPrice = 40.00m },
                new SalesModel { Date = DateTime.Parse("2024-03-03"), ProductName = "Product C", Quantity = 20, UnitPrice = 30.00m }
                // Add more data as needed
            };
        }
        public IActionResult Sales()
        {
        // Renders the data in Sales view
            return View(salesData);
        }
    }
}
Imports ReportGenerator.Models
Namespace ReportGenerator.Controllers
	Public Class SalesController
		Inherits Controller

		Private ReadOnly _viewRenderService As IRazorViewRenderer
		Private ReadOnly salesData As List(Of SalesModel)
		Public Sub New(ByVal viewRenderService As IRazorViewRenderer)
			_viewRenderService = viewRenderService
			' Example data with sales information
			salesData = New List(Of SalesModel) From {
				New SalesModel With {
					.Date = DateTime.Parse("2024-03-01"),
					.ProductName = "Product A",
					.Quantity = 10,
					.UnitPrice = 50.00D
				},
				New SalesModel With {
					.Date = DateTime.Parse("2024-03-02"),
					.ProductName = "Product B",
					.Quantity = 15,
					.UnitPrice = 40.00D
				},
				New SalesModel With {
					.Date = DateTime.Parse("2024-03-03"),
					.ProductName = "Product C",
					.Quantity = 20,
					.UnitPrice = 30.00D
				}
			}
		End Sub
		Public Function Sales() As IActionResult
		' Renders the data in Sales view
			Return View(salesData)
		End Function
	End Class
End Namespace
VB   C#

在上述代码的构造函数中,IRazorViewRenderer 服务被分配给私有字段 _viewRenderService。此外,控制器初始化了一个名为salesData的列表,其中包含SalesModel类的实例,代表用于演示的销售信息。

Sales() 操作方法通过salesData列表作为模型,返回名为 "销售 "的视图。该操作负责在相关视图中渲染销售数据,让用户以表格格式或任何其他所需的布局直观地查看销售信息。

如何在 ASP .NET 中创建报告:图 5

第 4 步:生成 PDF 报告

在控制器的GeneratePdf操作中,使用 IronPDF 的ChromePdfRenderer渲染 PDF 报告。 Razor视图转换为PDF** 报告文件。设置适当的响应标头,并将 PDF 文件返回给客户端。

public FileContentResult GeneratePdf()
{
    License.LicenseKey = "YOUR-LICENSE-KEY-HERE";
    ChromePdfRenderer renderer = new ChromePdfRenderer();
    // Render View to PDF document
    PdfDocument pdf = renderer.RenderRazorViewToPdf(_viewRenderService, "Views/Sales/Sales.cshtml", salesData);
    Response.Headers.Append("Content-Disposition", "inline");
    // Output PDF document
    return File(pdf.BinaryData, "application/pdf", "SalesReport.pdf");
}
public FileContentResult GeneratePdf()
{
    License.LicenseKey = "YOUR-LICENSE-KEY-HERE";
    ChromePdfRenderer renderer = new ChromePdfRenderer();
    // Render View to PDF document
    PdfDocument pdf = renderer.RenderRazorViewToPdf(_viewRenderService, "Views/Sales/Sales.cshtml", salesData);
    Response.Headers.Append("Content-Disposition", "inline");
    // Output PDF document
    return File(pdf.BinaryData, "application/pdf", "SalesReport.pdf");
}
Public Function GeneratePdf() As FileContentResult
	License.LicenseKey = "YOUR-LICENSE-KEY-HERE"
	Dim renderer As New ChromePdfRenderer()
	' Render View to PDF document
	Dim pdf As PdfDocument = renderer.RenderRazorViewToPdf(_viewRenderService, "Views/Sales/Sales.cshtml", salesData)
	Response.Headers.Append("Content-Disposition", "inline")
	' Output PDF document
	Return File(pdf.BinaryData, "application/pdf", "SalesReport.pdf")
End Function
VB   C#

让我们来详细了解一下上述代码的工作原理:

  1. 许可证密钥设置:

    • License.LicenseKey = "YOUR-LICENSE-KEY-HERE";

    • 此行设置 IronPDF 所需的许可证密钥。这对于在应用程序中使用 IronPDF 功能至关重要。
  2. 渲染器初始化:

    • ChromePdfRenderer renderer = new ChromePdfRenderer();

    • 创建ChromePdfRenderer的实例。该渲染器负责使用 Chromium 浏览器引擎将 Razor 视图转换为 PDF 格式。
  3. 将视图渲染为 PDF:

    • PdfDocument PDF = renderer.RenderRazorViewToPdf(_viewRenderService, "Views/Sales/Sales.cshtml", salesData);

    • 渲染 RazorViewToPdf() 调用ChromePdfRenderer的方法来渲染指定的Razor视图 (Views/Sales/Sales.cshtml) 到 PDF 文档中。salesData**变量是视图的模型。
  4. 内容处置标题:

    • 响应.标题.附加("内容处置","内联");

    • HTTP 响应头 Content-Disposition 设置为 "内联 "。这将指示浏览器直接显示 PDF 内容,以便在打开浏览器窗口或标签页时查看报告。
  5. 返回 PDF 文件:

    • 返回文件(pdf.BinaryData、"application/pdf"、"SalesReport.pdf");

    • PDF 文档内容将以FileContentResult的形式返回。它包括 PDF 文件的二进制数据 (pdf.BinaryData),指定 MIME 类型为"application/pdf ",并建议文件名为"SalesReport.pdf "

总之,该方法有效地协调了从 Razor 视图生成 PDF 报告的过程,适合集成到 ASP.NET 应用程序中以增强报告功能。

如何在 ASP .NET 中创建报告:图 6

有关 IronPDF 如何简化 PDF 报告生成过程以及其他 PDF 相关任务的详细信息,请访问 文件 page.

结论

在本文中,我们探讨了 IronPDF 如何简化在 ASP.NET 应用程序中生成 PDF 报告的过程。按照上文提供的分步指南,您可以快速将 IronPDF 集成到 ASP.NET 项目中,并轻松生成动态 PDF 报告。

凭借其丰富的功能集和无缝集成,IronPDF 可帮助开发人员创建专业品质的报告,以满足用户和企业的需求。

IronPDF 提供 免费试用.从以下网址下载资料库 *这里*** 并试一试。

< 前一页
如何在C#中创建报表应用程序
下一步 >
如何从PDF文档解析数据

准备开始了吗? 版本: 2024.10 刚刚发布

免费NuGet下载 总下载量: 11,108,738 查看许可证 >