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 2021.3的新版本在示範應用程式中實作了HiDPI支援。添加了用于嵌入Blazor Server應用程式的Razor元件。XODT和XODS有新的出口。FastReport OpenSource版本現在可以導入DevExpress,List和Label以及SQL Server Reporting Services報表。(點選下方按鈕下載下傳)
你知道不同的國家有不同的日期格式嗎?當您制作多語言報告或針對他們說波斯語(波斯語)的國家/地區進行報告時,以正确的格式顯示日期很重要。預設情況下,FastReport 使用歐洲日期格式,但 .NET 工具允許将其轉換為不同的格式。
是以,我們的任務是将日期轉換為波斯格式。例如,我們的報告有一個表達式 [Date],表示今天的日期:
表達式[Date]以DateTime格式擷取目前系統日期,但所有處理後的文本報告的值是String。讓我們在報告腳本中建立一個新函數:
private void ConvertToPersianDate(object sender, EventArgs e)
我們将從文本對象中喚起這個功能。我們建立一個臨時變量,它将對象的文本轉換為 DateTime:
DateTime d = DateTime.Parse((sender as TextObject).Text);
“sender as TextObject”是調用函數的對象的位址。如果我們以這種方式處理它,我們就可以使用它的功能和屬性。
之後,我們将需要 PersianCalendar 對象,它将日期轉換為波斯語格式:
PersianCalendar pc = new PersianCalendar ( ) ;
請注意,此對象存儲在 System.Globalization 庫中,并且必須在“使用”部分中指明。
然後我們必須更改對象的文本。更詳細地考慮這一行:
(sender as TextObject).Text = string.Format("{0}/{1}/{2}", pc.GetYear(d), pc.GetMonth(d), pc.GetDayOfMonth(d));
在這裡我們設定對象的文本。該值的格式為年/月/日,因為我們使用 PersianCalendar 的函數來擷取相應的值。可以根據需要編輯設定文本的代碼部分。例如,day.month.year 格式的日期代碼如下所示:
“{0}.{1}.{2}”, pc.GetDayOfMonth(d), pc.GetMonth(d), pc.GetYear(d)
結果,我們得到以下函數:
using System.Globalization;
namespace FastReport
{
public class ReportScript
{
private void ConvertToPersianDate(object sender, EventArgs e)
{
// Converting to DateTime format
DateTime d = DateTime.Parse((sender as TextObject).Text);// Creating an object for conversion
PersianCalendar pc = new PersianCalendar();// Creating a string using PersianCalendar
// It is possible to change the string template
(sender as TextObject).Text = string.Format("{0}/{1}/{2}", pc.GetYear(d), pc.GetMonth(d), pc.GetDayOfMonth(d));
}
}
}
将該函數添加到相關對象的 AfterData 事件中。
現在日期看起來像這樣:
其他與時間相關的功能可以參考下表:
GetDayOfWeek(), Day of week
GetMonth(), Month
GetDayOfMonth(), Day of month
GetYear(), Year
GetHour() Hour
GetMinute() Minute
GetSecond() Second