FastReport資訊:Blazor中的報告和PDF文件

roffey發表於2021-04-08

FastReport .Net是適用於Windows Forms,ASP.NET,MVC和.NET Core的全功能報表解決方案。它可以在Microsoft Visual Studio 2005-2019中使用。支援.Net Framework 2.0-4.x,.NET Core 3.0及以上版本。

【慧都網】免費下載FastReport .Net最新試用版

在FastReport .NET 2021.1的新版本中,我們實現了對.NET 5的支援。新增了新條形碼-Deutsce Post Leitcode。將RTF轉換為報告物件的演算法已得到顯著改進。並且還新增了用於轉換數字的新功能。歡迎下載體驗。(點選下方按鈕下載)


微軟最近啟動了一個名為Blazor的Web平臺。該框架允許使用C#語言以及HTML和CSS建立互動式Web介面。Blazor的需求量很高,並且在許多.NET開發人員中迅速流行。我們已經啟動了FastReport.Web.Blazor軟體包,其中包含用於在基於Blazor Server 技術的Web應用程式中處理報表的元件。該軟體包現在處於測試版狀態,並將逐步開發。


下面我們描述基於Blazor Server技術的簡單Web應用程式的建立。您可以在GitHub的我的個人資料中下載此演示專案。


首先,我們建立新專案。我們將使用適用於Blazor Server的模板。您可以使用Visual Studio(適用於Windows和macOS)或.NET CLI建立專案。在這兩種情況下,我們都需要.NET Core SDK(.NET SDK)3.1版或更高版本,可以從Microsoft官方網站下載。

Visual Studio 2019:

對於.NET CLI,我們在控制檯(終端)中鍵入以下命令:

dotnet new blazorserver

我們看到以下專案結構:

為了簡化專案,我們從建立的模板中刪除一些不必要的檔案:

- the whole Data folder
- Pages\Counter.razor
- Pages\FetchData.razor
- Shared\SurveyPrompt.razor

我們將一個名為“ Reports”的新資料夾新增到我們的專案資料夾中,並將所有必要的報告放入其中。為了演示,我新增了一些簡單的報表,這些報表在安裝FastReport降級版本時會應用:簡單列表,複雜(主-細節+組),子報表,條形碼和圖表。另外,對於這些報告,我們需要xml-nwind.xml格式的資料庫;我們將其放在同一資料夾中。

另外,有必要將Reports資料夾的內容複製到輸出資料夾中。為此,我們在Visual Studio中選擇相關檔案,然後在“屬性”中選擇“如果更新則複製”。


如果沒有Visual Studio,則可以在專案檔案(.csproj)中手動指示此屬性:

<ItemGroup>
 <None Update="Reports\*.*">
 <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
 </None>
 </ItemGroup>

然後,我們必須將FastReport.Core和FastReport.Web.Blazor包新增到我們的專案中。也可以透過Visual Studio或.NET CLI來完成。讓我們考慮這兩種變體。

要將包新增到Visual Studio,請在我們的專案檔案(csproj)上單擊滑鼠右鍵。上下文選單開啟;選擇“管理NuGet軟體包”。搜尋兩個必需的程式包。請注意,勾選“包括預發行版本”必須處於活動狀態。

要透過.NET CLI新增軟體包,請鍵入以下命令:

dotnet add package FastReport.Core --prerelease
dotnet add package FastReport.Web.Blazor --prerelease

然後,我們應該將FastReport.Core和FastReport.Web.Blazor使用的名稱空間新增到用於Razor的檔案名稱空間列表中。為此,透過新增幾行來編輯_Imports.razor檔案:

@using FastReport
@using FastReport.Web.Blazor
@using FastReport.Web.Blazor.Components

在我們的應用程式配置中註冊FastReport。為此,請開啟Startup.cs檔案,並在Configure方法的末尾新增以下行:

app.UseFastReport();

在Pages \ _Host.cshtml檔案中,將第一行替換為以下內容:

@page "/{ReportName}"

為了使URL能夠包含我們要開啟的報告的名稱,這是必需的。

然後,我們編輯導航選單Shared \ NavMenu.razor以對映Reports資料夾中的所有可用報告,並在它們之間進行切換。

@using System.IO
 
<div class="top-row pl-4 navbar navbar-dark">
 <a class="navbar-brand" href="">DemoBlazor</a>
</div>
 
<div>
 <ul class="nav flex-column">
 @foreach (string report in reports)
 {
 <li class="nav-item px-2">
 <NavLink class="nav-link" href="@report">
 @Path.GetFileNameWithoutExtension(report)
 </NavLink>
 </li>
 }
 </ul>
</div>
 
@code {
 // List of reports in folder
 private string[] reports =
 Directory.GetFiles(
 Path.Combine(
 Directory.GetCurrentDirectory(), "Reports"))
 .Where((filename) => Path.GetExtension(filename) == ".frx")
 .Select((filename) => Path.GetFileName(filename))
 .ToArray();
}

現在我們進入主要階段。編輯Pages \ Index.razor檔案以使用FastReport.Web.Blazor庫的主要元件WebReportContainer對映報表。輸入以下內容:

@page "/"
@page "/{ReportName}"
 
<WebReportContainer WebReport="@MyWebReport" />
 
@code {
 [Parameter]
 public string ReportName { get; set; }
 
 public WebReport MyWebReport { get; set; }
}

我們新增了WebReportContainer元件,併為其賦予了一個屬性-WebReport類的物件。

讓我們建立另一個具有類似名稱的檔案– Pages \ Index.razor檔案旁邊的Index.razor.cs並在其中寫入一個簡單的邏輯:

using System.IO;
using System.Data;
using FastReport;
using FastReport.Web.Blazor;
 
namespace DemoBlazor.Pages
{
 public partial class Index
 {
 const string DEFAULT_REPORT = "Simple List.frx";
 readonly string directory;
 
 DataSet DataSet { get; }
 
 protected override void OnParametersSet()
 {
 base.OnParametersSet();
 
 var report = Report.FromFile(
 Path.Combine(
 directory,
 string.IsNullOrEmpty(ReportName) ? DEFAULT_REPORT : ReportName));
 
 // Registers the user dataset
 report.RegisterData(DataSet, "NorthWind");
 
 // Create new WebReport object
 MyWebReport = new WebReport
 {
 Report = report,
 };
 }
 
 public Index()
 {
 directory = Path.Combine(
 Directory.GetCurrentDirectory(),
 Path.Combine("Reports"));
 
 DataSet = new DataSet();
 DataSet.ReadXml(Path.Combine(directory, "nwind.xml"));
 }
 }
}

該邏輯負責註冊資料,建立WebReport物件,為其分配必要的引數,包括我們從常量行中的報告名稱下載或預設使用的,由常量DEFAULT_REPORT定義的報告。

在對樣式和格式進行了其餘的少量操作之後,我們得到了一個Web應用程式,該應用程式可以處理報告,並提供了建立各種格式(PDF,Excel,Word和Open Office)文件的機會。

相關連結:

-文件(en):https : // (en) .pdf
-線上演示:
-NuGet程式包:https : //



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69995027/viewspace-2767039/,如需轉載,請註明出處,否則將追究法律責任。

相關文章