Ati*_*eem 10 asp.net asp.net-mvc reporting-services asp.net-core
谁能告诉我如何在 asp.net 核心程序中创建报告。我想将报告导出为 excel、pdf 和 word。在 asp.net core 中生成报告的最佳方法是什么?我正在寻求专业人士的建议
我正在 Asp.Net Core 2.1 中做一个项目。我使用 Rotativa.AspNetCore 作为报告功能。它是免费的,您可以从 NUGET 获得,只需安装即可。
它将视图转换为 pdf。您只需通过您的模型来查看和创建 html 表或您想要的内容以及 css。该库将您的视图转换为 PDF。
[HttpGet]
public async Task<IActionResult> Registration(int id)
{
var reg = await _context.Registrations
.Include(x => x.Property.Block)
.Include(x => x.Property.Phase)
.Include(x => x.Property.Street)
.Include(x => x.Nomines)
.FirstOrDefaultAsync(x => x.Id == id);
var report = new ViewAsPdf("Registration")
{
PageMargins = { Left = 5, Bottom = 5, Right = 5, Top = 5 },
Model = reg
};
return report;
}
Run Code Online (Sandbox Code Playgroud)
这是该视图的 html。我删除了很长的 html 内容,但您可以检查我的代码。
<div class="row">
<h1 class="report-heading text-center">Registration Form</h1>
<div class="col-xs-9">
<div class="form-group row">
<div class="col-xs-6 no-padding">
<label class="col-xs-3 report-label">Date:-</label>
<label class="col-xs-9 report-field">@(Model.DateTime?.ToString("dd-MMM-yyyy"))</label>
</div>
<div class="col-xs-6 no-padding">
<label class="col-xs-4 report-label">Form #</label>
<label class="col-xs-8 report-field">@(Model.FormNo)</label>
</div>
</div>
<div class="form-group row">
<div class="col-xs-6 no-padding">
<label class="col-xs-5 report-label">Plot/House #</label>
<label class="col-xs-7 report-field">@(Model?.Property?.No)</label>
</div>
<div class="col-xs-6 no-padding">
<label class="col-xs-3 report-label">Street:-</label>
<label class="col-xs-9 report-field">@(Model?.Property?.Street?.Name)</label>
</div>
</div>
<div class="form-group row">
<div class="col-xs-6 no-padding">
<label class="col-xs-3 report-label">Marla:-</label>
<label class="col-xs-9 report-field">@(Model?.Property?.Marla)</label>
</div>
<div class="col-xs-6 no-padding">
<label class="col-xs-3 report-label">Sqft:- </label>
<label class="col-xs-9 report-field">@(Model?.Property?.Sqft)</label>
</div>
</div>
<div class="form-group row">
<div class="col-xs-6 no-padding">
<label class="col-xs-3 report-label">Block:-</label>
<label class="col-xs-9 report-field">@(Model?.Property?.Block?.Name)</label>
</div>
<div class="col-xs-6 no-padding">
<label class="col-xs-3 report-label">Phase:-</label>
<label class="col-xs-9 report-field">@(Model?.Property?.Phase?.Name)</label>
</div>
</div>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
我想将该视图导出到 excel,然后您只需要在返回视图之前添加标题。它是一个样本。
public ActionResult Export()
{
Response.AddHeader("Content-Type", "application/vnd.ms-excel");
return View();
}
Run Code Online (Sandbox Code Playgroud)
我希望这能帮到您。
你没有提到报告的格式。如果它是表格格式的报告,那么您可能会考虑html DataTables,它附带 Pdf、word、excel 和开箱即用的打印选项。
在此处检查报告通常需要的多级标头选项: https: //datatables.net/examples/basic_init/complex_header.html