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

时间:2019-04-25 05:24:29

标签: asp.net asp.net-mvc asp.net-core reporting-services

谁能建议我如何在asp.net核心程序中创建报告。我想将报告导出为ex​​cel,pdf和word。在asp.net核心中生成报告的最佳方法是什么?我正在寻找专业知识的建议

5 个答案:

答案 0 :(得分:1)

我正在用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;
}

这是该视图的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>

我想将视图导出到excel,然后只需要在返回视图之前添加标题即可。这是一个示例。

public ActionResult Export()
{
    Response.AddHeader("Content-Type", "application/vnd.ms-excel");
    return View();
}

我希望这会对您有所帮助。

答案 1 :(得分:0)

您没有提及报告的格式。如果它是表格格式的报告,那么您可以考虑使用html DataTables,它附带了Pdf,word,excel和“打印”选项。

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

答案 2 :(得分:0)

.NET核心应用程序有很多很棒的错误跟踪和报告框架,例如SentryRaygun,可以通过nuget添加,对于小型项目,可以免费使用。

还要检查Error HandlingHandling Errors in ASP .NET Core,以大致了解错误处理。

因此,您可以编写自己的记录器,或者您正在使用(在线)框架来创建和监视报告。我相信您会找到适合您需求的产品。

答案 3 :(得分:0)

如果要使用rdlc报告创建pdf / excel / word,建议您使用AspNetCore.Reporting库。这是开源的,是一个nuget包。您可以将其集成到.NET Core API或.NET Core Azure函数中。您可以生成一个字节数组,将其转换为基数为64的字符串,然后将其检索到客户端。我编写了一个示例报告生成项目,您可以在here中找到它。

答案 4 :(得分:0)

DevExpress 似乎有一个免费的报告工具。我没有使用过它,不知道它的效果如何,也不知道它是否适合您的需求,但可能值得一看。

https://community.devexpress.com/blogs/aspnet/archive/2020/06/09/blazor-ui-components-official-release-with-new-controls-amp-features-and-blazor-reports-available-in-v20-1.aspx