在实际环境中测试
在生产中测试无水印。
随时随地为您服务。
报表对于以结构化和可视化的格式展示数据至关重要。无论是销售数据、分析还是财务摘要,生成报告都是网络应用程序的常见要求。 微软 提供的 rdlc 报告服务可以使用 Web 窗体报告查看器控件集成到网络应用程序中。然而,这一过程往往复杂而耗时。
这就是 IronPDF 的用武之地。IronPDF 是一个多功能库,可简化在 ASP.NET 和其他 Web 框架中生成 PDF 报告的过程,功能强大且易于使用。在本文中,我们将探讨如何使用 IronPDF 在 ASP.NET 中创建报表。
1.使用 Visual Studio 创建 ASP.NET 网络应用程序
2.安装 IronPDF 和 IronPDF.Extensions.MVC.Core
3.实例化ChromePdfRenderer对象的发送者
4.调用RenderRazorViewToPdf方法将视图转换为 PDF 文件
5.使用 Response.Headers.Append 添加 "Content-Disposition"(内容处置)。
6.使用File方法用PDF.BinaryData创建报告
IronPDF 是一个多功能库,可简化 ASP.NET 和其他网络框架中 PDF 文档的生成。其丰富的功能集和直观的应用程序接口(API)使其成为希望直接从其网络应用程序中生成动态报告、发票、收据等的开发人员的理想选择。使用 IronPDF,开发人员可以毫不费力地将 HTML、CSS 甚至 Razor 视图转换为高质量的 PDF 文档,从而将报表功能无缝集成到 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.点击 "创建 "生成项目结构。
接下来,让我们使用 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 项目中使用 IronPDF 创建 PDF 报告的步骤。在将视图转换为报告之前,我们需要一个模型、视图和控制器来创建一个数据源,用于创建和下载 PDF 格式的新报告。
首先,创建一个模型类 (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
接下来,创建一个 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>
现在,在 "视图"->"共享 "文件夹下的_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>
在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)()
实现控制器 (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
在上述代码的构造函数中,IRazorViewRenderer 服务被分配给私有字段 _viewRenderService。此外,控制器初始化了一个名为salesData的列表,其中包含SalesModel类的实例,代表用于演示的销售信息。
Sales() 操作方法通过salesData列表作为模型,返回名为 "销售 "的视图。该操作负责在相关视图中渲染销售数据,让用户以表格格式或任何其他所需的布局直观地查看销售信息。
在控制器的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
让我们来详细了解一下上述代码的工作原理:
许可证密钥设置:
License.LicenseKey = "YOUR-LICENSE-KEY-HERE";
渲染器初始化:
ChromePdfRenderer renderer = new ChromePdfRenderer();
将视图渲染为 PDF:
PdfDocument PDF = renderer.RenderRazorViewToPdf(_viewRenderService, "Views/Sales/Sales.cshtml", salesData);
内容处置标题:
响应.标题.附加("内容处置","内联");
返回 PDF 文件:
返回文件(pdf.BinaryData、"application/pdf"、"SalesReport.pdf");
总之,该方法有效地协调了从 Razor 视图生成 PDF 报告的过程,适合集成到 ASP.NET 应用程序中以增强报告功能。
有关 IronPDF 如何简化 PDF 报告生成过程以及其他 PDF 相关任务的详细信息,请访问 文件 page.
在本文中,我们探讨了 IronPDF 如何简化在 ASP.NET 应用程序中生成 PDF 报告的过程。按照上文提供的分步指南,您可以快速将 IronPDF 集成到 ASP.NET 项目中,并轻松生成动态 PDF 报告。
凭借其丰富的功能集和无缝集成,IronPDF 可帮助开发人员创建专业品质的报告,以满足用户和企业的需求。