个人中心

联系我们

搜索
搜索 登录 免费注册
界面美化
业务优化
开发工具
图像管理
文档管理
Parasoft

新闻资讯

关注工具软件产品最新动态,了解软件开发行业新趋势。

FastReport:使用 JetBrains Rider (C#) 创建 PDF 报告

原创
软件开发
来源:FastReport
报表
图表
PDF
C#
.net
Unix/Linux
IDE
2023-12-12
报表
图表
PDF
C#
.net
Unix/Linux
IDE

在本文中,我们将在 Ubuntu 22.04.1 LTS 上看看 .NET 平台的世界,而不使用 Microsoft Visual Studio(因为 Linux 上无法安装),并创建一份可导出的 PDF 报告。目前与Visual Studio类似的当然是JetBrains Rider。它是由 JetBrains 开发的跨平台 .NET 集成开发环境。它支持 C#、VB.NET 和 F# 编程语言。


我们不讨论哪个集成开发环境更好或更差。让我们使用 FastReport .NET 从 JetBrains Rider 创建、构建和导出 PDF 报告/文档。


开始需要什么?至少,您需要在电脑上安装 JetBrains Rider IDE。此外,还要考虑到 Linux 的特性并进行额外设置。


首先,对于 Linux,我们需要额外的库,这些库可能默认没有安装:


• libgdiplus;

• libx11-dev.


以 Ubuntu 22.04.1 LTS 为例进行 Linux 设置:


1.打开控制台;

2.更新 apt-get 并安装软件包:


• sudo apt-get update;

• sudo apt-get install libgdiplus;


接下来,选择 "新建解决方案",创建一个新的解决方案。



下一步是设置项目。在 .NET/.NET Core 部分选择控制台应用程序项目类型。然后为项目命名,例如使用 "ReportPDF_Core_ConsoleApp"。点击 "控制台应用程序类型"、"C# 语言"、".NET 6.0 框架 "之后,我们将看到 "控制台应用程序 "项目。



首先,让我们在程序代码中为报告添加一个简单的示例数据集。为此,请在 Program.cs 中添加


 using System.Data;


接下来让我们添加一个变量:


// creating a dataset set 

DataSet dataSet = new DataSet();


让我们添加 CreateDataSet 函数,创建并填充数据集:


void CreateDataSet()

{

// create a simple dataset with one table

// create a simple dataset

dataSet = new DataSet();

 

// create a table

DataTable table = new DataTable();

table.TableName = "Employees";

// adding a table to the dataset

dataSet.Tables.Add(table);

 

// adding data to a table

table.Columns.Add("ID", typeof(int));

table.Columns.Add("Name", typeof(string));

table.Rows.Add(1, "Andrew Fuller");

table.Rows.Add(2, "Nancy Davolio");

table.Rows.Add(3, "Margaret Peacock");

}


并添加对 CreateDataSet 函数的调用:


//creating a dataset object

DataSet dataSet = new DataSet();

CreateDataSet();


让 FastReport .NET 在 JetBrains Rider 中运行的最简单方法是什么?从Fast Reports中使用我们的私有NuGet服务器。


本文将介绍如何在购买FastReport .NET后添加NuGet包。下面是一个简短的说明,以免您需要搜索另一篇文章。点击 IDE 底部的 NuGet 选项卡,然后点击 Sources 选项卡。



现在,我们点击 "+"添加一个新的存储库,并输入必要的数据:


- 名称-源名称,不含空格(例如 FastReport);

- URL-https://nuget.fast-report.com/api/v3/index.json;

- 用户-Fast Reports 账户的电子邮件;

- 密码-来自 Fast Reports 账户的密码。



您将看到存储库:



现在我们将安装 FastReport Core 软件包。为此,请转到 "软件包 "选项卡,然后根据 FastReport 软件库过滤软件包。当然,安装找到的软件包。



如果成功,您将收到通知。



接下来,让我们从代码中创建一个模板,为此我们将执行以下操作。添加到 Program.cs 中:


using System.Drawing;

using FastReport;

using FastReport.Export.Pdf;

using FastReport.Utils;


接下来,在下面的 Program.cs 中添加 CreateDataSet:


Report report = new Report();

CreateReportTemplate();

ExportToPDF();


然后添加创建报告模板的函数 CreateReportTemplate:


void CreateReportTemplate()

{

 // adding a report page

 ReportPage page = new ReportPage();

 

 // creating a date band

 DataBand data = new DataBand();

 PageHeaderBand dataText = new PageHeaderBand();

 

 //creating a header

 ReportTitleBand titleBand = new ReportTitleBand();

 TextObject employeeIdText = new TextObject();

 TextObject employeeNameText = new TextObject();

 TextObject idText = new TextObject();

 TextObject nameText = new TextObject();

 TextObject titleText = new TextObject();

 //registering the data source

 report.RegisterData(dataSet);

 //enabling on the data table

 report.GetDataSource("Employees").Enabled = true;

 //adding a page to the template

 report.Pages.Add(page);

 // add to the page: data,data Text, titleBand

 // and set the unique name of the page

 page.AddChild(data);

 page.AddChild(dataText);

 page.AddChild(titleBand);

 page.CreateUniqueName();

 // set the unique name titleBand

 // and set the band settings

 titleBand.CreateUniqueName();

 titleBand.Height = Units.Centimeters * 1.5f;

 titleText.Bounds = new RectangleF(300, 0, Units.Centimeters * 10, Units.Centimeters * 0.5f);

 titleText.Text = "Employees";

 titleText.Font = new Font("Arial", 14, FontStyle.Bold);

 titleText.VertAlign = VertAlign.Center;

 

 // set the unique name data

 // and set the data settings

 data.CreateUniqueName();

 data.DataSource = report.GetDataSource("Employees");

 data.Height = Units.Centimeters * 0.5f;

 

 // set a unique dataText name

 // and set the dataText settings

 dataText.CreateUniqueName();

 dataText.Height = Units.Centimeters * 0.8f;

 

 // setting the unique name employeeIdText

 // and set the employeeIdText, idText settings

 employeeIdText.Parent = data;

 employeeIdText.CreateUniqueName();

 employeeIdText.Bounds = new RectangleF(0, 0, Units.Centimeters * 10, Units.Centimeters * 0.5f);

 idText.Bounds = new RectangleF(0, 0, Units.Centimeters * 10, Units.Centimeters * 0.5f);

 idText.Text = "ID";

 employeeIdText.Text = "[Employees.ID]";

 

 // set the unique name employeeNameText

 // and set the employeeNameText, nameText settings

 employeeNameText.Parent = data;

 employeeNameText.CreateUniqueName();

 employeeNameText.Bounds = new RectangleF(50, 0, Units.Centimeters * 10, Units.Centimeters * 0.5f);

 nameText.Bounds = new RectangleF(50, 0, Units.Centimeters * 10, Units.Centimeters * 0.5f);

 nameText.Text = "Name";

 employeeNameText.Text = "[Employees.Name]";

 

 // add on data band: employeeIdText, employeeNameText

 data.AddChild(employeeIdText);

 data.AddChild(employeeNameText);

 

 // add on dataText band: idText, nameText

 dataText.AddChild(idText);

 dataText.AddChild(nameText);

 

 // add on titleBand band: itleText

 titleBand.AddChild(titleText);

}


接下来,添加创建 ExportToPDF 报告模板的函数,并将报告导出命名为 "Report.pdf":


void ExportToPDF()

{

 // running the report

 report.Prepare();

 // creating an export instance

 PDFExport export = new PDFExport();

 report.Export(export, "test.pdf");

 // disposing the resources used by the report

 report.Dispose(); 

}


让我们启动控制台应用程序。如果收到退出代码为 0 的 Process finished 响应,则说明一切正常,请打开报告,在我们的例子中,路径是 /home/alex/RiderProjects/ReportPDF_Core_ConsoleApp/ReportPDF_Core_ConsoleApp/bin/Debug/net6.0/test.pdf:



这样,我们就得到了一份由数据集生成的简单报告/PDF 文档。


在本文中,我们讨论了 JetBrains Rider (C#) + .NET Core + Console Application + FastReport .NET Core + Linux (Ubuntu 22.04.1 LTS) 的绑定,并从 PDF 数据集生成了一份报告。当然,我们还确保.NET平台可以在没有Microsoft Visual Studio的情况下轻松使用,因为Linux根本就没有Visual Studio。


当然,我们还没有告诉你如何在 Linux 上创建图形用户界面应用程序,例如,可以使用 Mono 框架来完成,但你可以在我们的网站上找到有关如何实现的文章。


完整程序列表


using System.Data;

using System.Drawing;

using FastReport;

using FastReport.Export.Pdf;

using FastReport.Utils;

 

//creating a data set 

DataSet dataSet = new DataSet();

CreateDataSet();

//creating a report

Report report = new Report();

 

CreateReportTemplate();

ExportToPDF();

 

void CreateReportTemplate()

{

 // add a report page

 ReportPage page = new ReportPage();

 

 // create a data band

 DataBand data = new DataBand();

 PageHeaderBand dataText = new PageHeaderBand();

 

 //create a title

 ReportTitleBand titleBand = new ReportTitleBand();

 TextObject employeeIdText = new TextObject();

 TextObject employeeNameText = new TextObject();

 TextObject idText = new TextObject();

 TextObject nameText = new TextObject();

 TextObject titleText = new TextObject();

 //register a data source

 report.RegisterData(dataSet);

 //enable a data table

 report.GetDataSource("Employees").Enabled = true;

 //add a page to the template

 report.Pages.Add(page);

 //add on a page: data,dataText, titleBand

 // and set the unique page name

 page.AddChild(data);

 page.AddChild(dataText);

 page.AddChild(titleBand);

 page.CreateUniqueName();

 // set the unique name titleBand

 // and set the band settings

 titleBand.CreateUniqueName();

 titleBand.Height = Units.Centimeters * 1.5f;

 titleText.Bounds = new RectangleF(300, 0, Units.Centimeters * 10, Units.Centimeters * 0.5f);

 titleText.Text = "Employees";

 titleText.Font = new Font("Arial", 14, FontStyle.Bold);

 titleText.VertAlign = VertAlign.Center;

 

 // create the unique data name

 // and set the data settings

 data.CreateUniqueName();

 data.DataSource = report.GetDataSource("Employees");

 data.Height = Units.Centimeters * 0.5f;

 

 // create a unique dataText name

 // and set dataText settings

 dataText.CreateUniqueName();

 dataText.Height = Units.Centimeters * 0.8f;

 

 // create the unique employeeIdText name

 // and set the employeeIdText, idText settings

 employeeIdText.Parent = data;

 employeeIdText.CreateUniqueName();

 employeeIdText.Bounds = new RectangleF(0, 0, Units.Centimeters * 10, Units.Centimeters * 0.5f);

 idText.Bounds = new RectangleF(0, 0, Units.Centimeters * 10, Units.Centimeters * 0.5f);

 idText.Text = "ID";

 employeeIdText.Text = "[Employees.ID]";

 

 // create the unique name employeeNameText 

 // and set the employeeNameText, nameText settings

 employeeNameText.Parent = data;

 employeeNameText.CreateUniqueName();

 employeeNameText.Bounds = new RectangleF(50, 0, Units.Centimeters * 10, Units.Centimeters * 0.5f);

 nameText.Bounds = new RectangleF(50, 0, Units.Centimeters * 10, Units.Centimeters * 0.5f);

 nameText.Text = "Name";

 employeeNameText.Text = "[Employees.Name]";

 

 // and add on data band: employeeIdText, employeeNameText

 data.AddChild(employeeIdText);

 data.AddChild(employeeNameText);

 

 // add on dataText band: idText, nameText

 dataText.AddChild(idText);

 dataText.AddChild(nameText);

 

 // add on titleBand band: itleText

 titleBand.AddChild(titleText);

}

 

void ExportToPDF()

{

 report.Prepare();

 PDFExport export = new PDFExport();

 report.Export(export, "test.pdf");

 report.Dispose(); 

}

 

void CreateDataSet()

{

 // create a simple dataset with a single table

 

 // create a simple dataset

 dataSet = new DataSet();

 

 // create a table

 DataTable table = new DataTable();

 table.TableName = "Employees";

 // add the table to dataset

 dataSet.Tables.Add(table);

 

 // add data to the table

 table.Columns.Add("ID", typeof(int));

 table.Columns.Add("Name", typeof(string));

 table.Rows.Add(1, "Andrew Fuller");

 table.Rows.Add(2, "Nancy Davolio");

 table.Rows.Add(3, "Margaret Peacock");

}


联系我们

周一至周日 8:00-23:00

免费热线

023-62585653

张经理:13082556879

罗经理:17558866126

许经理:13057566525

开发外包

ERP-一体化

小程序

企业微信客服

版权所有:重庆庚乾信息科技有限公司 ©2025 Gengqian Information Technology Co., Ltd. 渝ICP备2022008063号-2 渝公网安备50010702505508

版权所有:重庆庚乾信息科技有限公司

©2025 Gengqian Information Technology Co., Ltd. 渝ICP备2022008063号-2 渝公网安备50010702505508