引入NuGet包:FastReport.OpenSource.Web、FastReport.Compat
Startup.cs的Configure中加入: app.UseFastReport();
新建一个页面,在页面中加入:@await ViewBag.WebReport.Render();
创建控制器,引用命名空间:using FastReport.Web;
在方法中,加入:
public IActionResult UserReport()
{
var report = new WebReport();
report.Report.Load(_hostingEnvironment.WebRootPath+ "/ReportTemp/UserList.frx");
var list = from b in context.App_User.ToList()
select new
{
USER_CODE = b.USER_CODE,
USER_NAME = b.USER_NAME
};
var dataset = DataSetHelper.ConvertToDataSet(list.ToList());
dataset.Tables[0].TableName = "Table";//数据源中的名字
report.Report.RegisterData(dataset);//注册数据
ViewBag.WebReport = report;
return View();
}
控制器完整代码:
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Threading.Tasks;
using FastReport.Web;
using Microsoft.AspNetCore.Mvc;
using NetCore.Models;
using CoreHelper;
using Microsoft.AspNetCore.Hosting;
namespace NetCore.Controllers.User
{
public class UserController : Controller
{
DataBaseContext context;
private readonly IHostingEnvironment _hostingEnvironment;
public UserController(DataBaseContext context, IHostingEnvironment hostingEnvironment)
{
this.context = context;
_hostingEnvironment = hostingEnvironment;
}
public IActionResult UserReport()
{
var report = new WebReport();
report.Report.Load(_hostingEnvironment.WebRootPath+ "/ReportTemp/UserList.frx");
var list = from b in context.App_User.ToList()
select new
{
USER_CODE = b.USER_CODE,
USER_NAME = b.USER_NAME
};
var dataset = DataSetHelper.ConvertToDataSet(list.ToList());
dataset.Tables[0].TableName = "Table";//数据源中的名字
report.Report.RegisterData(dataset);//注册数据
ViewBag.WebReport = report;
return View();
}
}
}
fastreport代码如下:
<?xml version="1.0" encoding="utf-8"?>
<Report ScriptLanguage="CSharp" ReportInfo.Created="06/09/2020 13:33:18" ReportInfo.Modified="06/09/2020 13:44:34" ReportInfo.CreatorVersion="2013.2.5.0">
<Dictionary>
<TableDataSource Name="Table" ReferenceName="Data.Table" DataType="System.Data.DataView, System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" Enabled="true">
<Column Name="账号" Alias="USER_CODE" DataType="System.String"/>
<Column Name="姓名" Alias="USER_NAME" DataType="System.String"/>
</TableDataSource>
</Dictionary>
<ReportPage Name="Page1">
<ReportTitleBand Name="ReportTitle1" Width="718.2" Height="37.8">
<TextObject Name="Text7" Left="274.05" Top="9.45" Width="132.3" Height="18.9" Text="用户信息" HorzAlign="Center" VertAlign="Center" Font="宋体, 12pt, style=Bold"/>
</ReportTitleBand>
<PageHeaderBand Name="PageHeader1" Top="41.8" Width="718.2" Height="18.9">
<TextObject Name="Text1" Left="9.45" Width="94.5" Height="18.9" Border.Lines="All" Text="序号" HorzAlign="Center" VertAlign="Center" Font="宋体, 9pt"/>
<TextObject Name="Text2" Left="103.95" Width="94.5" Height="18.9" Border.Lines="All" Text="账号" HorzAlign="Center" VertAlign="Center" Font="宋体, 9pt"/>
<TextObject Name="Text3" Left="198.45" Width="94.5" Height="18.9" Border.Lines="All" Text="姓名" HorzAlign="Center" VertAlign="Center" Font="宋体, 9pt"/>
</PageHeaderBand>
<DataBand Name="Data1" Top="64.7" Width="718.2" Height="18.9" DataSource="Table">
<TextObject Name="Text4" Left="9.45" Width="94.5" Height="18.9" Border.Lines="All" Text="[Row#]" HorzAlign="Center" VertAlign="Center" Font="宋体, 9pt"/>
<TextObject Name="Text5" Left="103.95" Width="94.5" Height="18.9" Border.Lines="All" Text="[Table.USER_CODE]" HorzAlign="Center" VertAlign="Center" Font="宋体, 9pt"/>
<TextObject Name="Text6" Left="198.45" Width="94.5" Height="18.9" Border.Lines="All" Text="[Table.USER_NAME]" HorzAlign="Center" VertAlign="Center" Font="宋体, 9pt"/>
</DataBand>
</ReportPage>
</Report>
- 要注意TableDataSource 里面的Name和ReferenceName;如果Name为DemoTable,ReferenceName里面就是Data.DemoTable