谁能建议我如何在asp.net核心程序中创建报告。我想将报告导出为excel,pdf和word。在asp.net核心中生成报告的最佳方法是什么?我正在寻找专业知识的建议
答案 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核心应用程序有很多很棒的错误跟踪和报告框架,例如Sentry,Raygun,可以通过nuget添加,对于小型项目,可以免费使用。
还要检查Error Handling和Handling 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 似乎有一个免费的报告工具。我没有使用过它,不知道它的效果如何,也不知道它是否适合您的需求,但可能值得一看。