轉帖|使用教程|編輯:莫成敏|2020-04-15 09:43:32.550|閱讀 450 次
概述:用戶使用 ActiveReports 想實現 .Net Core Web 網頁中直接打開報表導出的PDF ,Excel或其他導出文件。在 ASP.Net 中可以使用 HttpHandlers 處理這類問題,但是在.Net Core 平臺中已經丟棄HttpHandlers 和 HttpModules。所以開發者可以使用ASP.NET Core 中間件來實現此功能。本文就來分享如何實現此功能。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
ActiveReports 是一款專注于 .NET 平臺的報表控件,全面滿足 HTML5、WinForm、ASP.NET、.NET Core、WPF 等平臺下的中國式復雜報表設計和跨平臺報表開發需求,作為專業的報表工具為全球超過 300,000 名開發者提供全面的報表解決方案。
用戶使用 ActiveReports 想實現 .Net Core Web 網頁中直接打開報表導出的PDF ,Excel或其他導出文件。
在 ASP.Net 中可以使用 HttpHandlers 處理這類問題,但是在.Net Core 平臺中已經丟棄HttpHandlers 和 HttpModules。所以開發者可以使用ASP.NET Core 中間件來實現此功能。本文就來分享如何實現此功能。
以下是示例圖片:展示了各車型2019的型號列表。那標題中的 Tesla 品牌和 2019 就是報表的參數,當我們直接輸入 在瀏覽器中輸入帶年份和品牌名的參數值就可以直接打開該報表生成的PDF。如 //
操作步驟:
1、在VS2019 新建空的 ASP.Net Core Web應用
且注意取消選中為HTTP配置 選項
2、添加 GrapeCity.ActiveReports.Export.Pdf Nuget 包
在瀏覽輸入:grapecity.activereports.export.pdf
3、設置報表
(1)并設置報表生成操作為內嵌資源。
(2)為報表添加報表參數mark,year用于接收URL 傳遞的參數值
(3)為報表添加數據源,后添加數據集,當字段生成成功后,修改數據源連接字符串如下:
注意在數據源鏈接字串中拼接了報表參數,用于動態獲取數據。
="xmldoc=//vpic.nhtsa.dot.gov/api/vehicles/getmodelsformakeyear/make/"& [@make] & "/modelyear/" & [@year] &"?format=xml"
4、在Starup.cs 中添加以下方法:
internalSystem.IO.Stream GeneratePDF(string make,int year) { using (var reportStream = typeof(Startup).Assembly.GetManifestResourceStream("WebApplication22.RdlReport.rdlx")) using (var reader = new System.IO.StreamReader(reportStream)) { var rpt = new GrapeCity.ActiveReports.PageReport(reader); rpt.Document.Parameters["make"].CurrentValue =make; rpt.Document.Parameters["year"].CurrentValue =year; var pdfRe = newGrapeCity.ActiveReports.Export.Pdf.Page.PdfRenderingExtension(); var output = newGrapeCity.ActiveReports.Rendering.IO.MemoryStreamProvider(); rpt.Document.Render(pdfRe,output); return output.GetPrimaryStream().OpenStream(); } }
5、配置 URL 映射
因為ASP.NET Core 路由的配置是非常靈活的。因為我們給的數據基本就在可選范圍內,如車輛品牌就是:Honda, Tesla 及Mercedes; 年份也是2000-2020年,所以配置路由要用正則來做判斷后限制:
/cars/{make:regex(^(honda|mecedes|tesla)$)}/{year:range(2000,2020)}
路由映射配置完成后就可以調用GeneratePDF方法:
app.UseEndpoints(endpoints => { endpoints.MapGet("/cars/{make:regex(^(honda|mercedes|tesla)$)}/{year:range(2000,2020)}",async context => { try { var year =int.Parse(context.Request.RouteValues["year"].ToString()); var make =context.Request.RouteValues["make"].ToString(); var stream =GeneratePDF(make, year); context.Response.ContentType = "application/pdf"; context.Response.Headers.Add("content-disposition",$"inline; filename={make}-{year}.pdf"); awaitstream.CopyToAsync(context.Response.Body); } catch(Exception ex) { awaitcontext.Response.WriteAsync(ex.ToString()); } });
6、運行
運行就可以看到結果,注意如果URL 里面不帶汽車品牌和年份,就會報404錯誤。
在瀏覽器中輸入鏈接:
//
本教程內容到這里就結束了,希望對您有所幫助!感興趣的朋友可以下載ActiveReports試用版免費體驗,或者關注慧都網了解更多產品資訊~
相關內容推薦:
ActiveReports使用教程:如何在Winform項目集成ActiveReports?
ActiveReports使用教程:如何在MVC中使用ActiveReports
ActiveReports使用教程:如何在Asp.net 中集成 ActiveReports
ActiveReports使用教程:如何借助參數報表設置下拉框和數據過濾
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自: