ActiveReports JSviewer支持在Core 环境下进行报表的集成,本节就讲如何一步步的在 .Net Core 框架里集成ActiveReports报表控件
环境需求:开发环境 VS2019、.NetCore 3.1 、ActiveReportsV14
1.打开 Visual Studio 新建项目,创建Asp.Net Core Web应用程序
2、命名项目名称和项目位置
3、选择Web 应用程序(模型视图控制器)
4、安装ActiveReports Nuget程序包。为此,请打开Nuget软件包管理器并安装软件包:
“ GrapeCity.ActiveReports.Aspnetcore.Viewer。”
5、打开Startup.cs并将以下内容添加到ConfigureServices和Configure块内:
public class Startup { public static string EmbeddedReportsPrefix = "WebCore001.Reports"; // This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { services .AddLogging(config => { // Disable the default logging configuration config.ClearProviders(); // Enable logging for debug mode only if (Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") == Environments.Development) { config.AddConsole(); } }) .AddReporting() .AddMvc(option => option.EnableEndpointRouting = false); } // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } app.UseReporting(settings => { settings.UseEmbeddedTemplates(EmbeddedReportsPrefix, Assembly.GetAssembly(GetType())); settings.UseCompression = true; }); app.UseMvc(); } }
6、添加一个新文件夹并将其命名为“ Reports”(可以随意命名)。我们将在这里放置所有报告文件。现在,您可以添加现有的ActiveReports报表或创建一个新的报表。
7、将jsViewer.min.js和jsViewer.min.css从'node_modules \ @grapecity \ ar-viewer \ dist'复制到应用程序的'wwwroot'文件夹中。
7.1 获取 JSViewer需要的资源文件
在VS 程序包管理控制台中输入命令:npm install @grapecity/ar-viewer,安装完成后可在新建"项目路径下"找到node_modules 文件夹,然后将所有文件拷贝到 Scripts路径
7.2然后在“ wwwroot”文件夹下添加一个HTML页面(例如,index.html)
8、打开Controllers文件夹下的HomeController.cs,删除所有Action方法并添加以下内容:
namespace WebCore001 { [Route("/")] public class HomeController : Controller { public object Index() => Resource("index.html"); [HttpGet("{file}")] public object Resource(string file) { var stream = GetType().Assembly.GetManifestResourceStream("WebCore001.wwwroot." + file); if (stream == null) return new NotFoundResult(); if (Path.GetExtension(file) == ".html") return new ContentResult() { Content = new StreamReader(stream).ReadToEnd(), ContentType = "text/html" }; if (Path.GetExtension(file) == ".ico") using (var memoryStream = new MemoryStream()) { stream.CopyTo(memoryStream); return new FileContentResult(memoryStream.ToArray(), "image/x-icon") { FileDownloadName = file }; } using (var streamReader = new StreamReader(stream)) return new FileContentResult(System.Text.Encoding.UTF8.GetBytes(streamReader.ReadToEnd()), GetType(file)) { FileDownloadName = file }; } private string GetType(string file) { if (file.EndsWith(".css")) return "text/css"; if (file.EndsWith(".js")) return "text/javascript"; return "text/html"; } [HttpGet("reports")] public ActionResult Reports() { string[] validExtensions = { ".rdl", ".rdlx", ".rdlx-master" }; return new ObjectResult( typeof(HomeController).Assembly.GetManifestResourceNames() .Where(x => x.StartsWith(Startup.EmbeddedReportsPrefix) && validExtensions.Any(ext => x.EndsWith(ext, StringComparison.InvariantCultureIgnoreCase))) .Select(x => x.Substring(Startup.EmbeddedReportsPrefix.Length + 1)) .ToArray()); } } }
9、修改index.html 页面
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <link rel='shortcut icon' type='image/x-icon' href='favicon.ico' /> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <meta name="theme-color" content="#000000"> <title>JS Viewer</title> <link href="jsViewer.min.css" rel="stylesheet"> <link href="index.css" rel="stylesheet"> </head> <body onload="loadViewer()"> <div style="width: 100%; overflow-x: hidden"> <div style="float:right;width:100%" id="viewerContainer"> </div> </div> <script type="text/javascript" src="jsViewer.min.js"></script> <script type="text/javascript"> let viewer; function loadViewer() { viewer = GrapeCity.ActiveReports.JSViewer.create({ element: '#viewerContainer' }); viewer.openReport("RdlReport1.rdlx"); } </script> </body> </html>
10、重新生成,预览展示
相关资源:
注意
如需寻求在线帮助,请访问 ActiveReports 求助中心
如需了解更多ActiveReports产品特性,请访问 ActiveReports 官方网站
ActiveReports 官方技术交流群:109783140
下载产品体验产品功能:http://www.gcpowertools.com.cn/products/download.aspx?pid=16