在 asp.net core 中生成报告的最佳方法是什么?

Ati*_*eem 10 asp.net asp.net-mvc reporting-services asp.net-core

谁能告诉我如何在 asp.net 核心程序中创建报告。我想将报告导出为 excel、pdf 和 word。在 asp.net core 中生成报告的最佳方法是什么?我正在寻求专业人士的建议

Uxm*_*Ali 5

我正在 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)

我希望这能帮到您。


Rah*_*tur 0

你没有提到报告的格式。如果它是表格格式的报告,那么您可能会考虑html DataTables,它附带 Pdf、word、excel 和开箱即用的打印选项。

在此处检查报告通常需要的多级标头选项: https: //datatables.net/examples/basic_init/complex_header.html