报表控件FastReport使用指南——使用NuGet包创建PDF文档

news2024/12/25 16:07:34

FastReport 是功能齐全的报表控件,可以帮助开发者可以快速并高效地为.NET,VCL,COM,ActiveX应用程序添加报表支持,由于其独特的编程原则,现在已经成为了Delphi平台最优秀的报表控件,支持将编程开发中的报表信息输出为TXT、PDF等多种文件格式,是编程开发人员必备的报表工具。

FastReport .Net是一款全功能的Windows Forms、ASP.NET和MVC报表分析解决方案,使用FastReport .Net可以创建独立于应用程序的.NET报表。

FastReport.NET官方版下载(qun:585577353)https://www.evget.com/product/1861/download

在上篇文章中,我们学习了如何使用FastReport .NET在Ubuntu 22.04.1 LTS系统中的.JetBrains Rider上创建PDF文档。本次将分享FastReport .NET 在 JetBrains Rider 中工作的最简单方法——使用 Fast Reports 中的私有 NuGet 服务器。

因此,本文主要描述在购买FastReport .NET后如何添加NuGet包,从而在Ubuntu 22.04.1 LTS系统中的.NET IDE上创建、构建和导出PDF报告/文档的过程。

单击IDE底部的NuGet选项卡,然后单击Sources选项卡。

现在通过点击“+”来添加一个新的存储库,并输入必要的数据:

- Name—不带空格的源名称(例如FastReport);
- URL—https://nuget.fast-report.com/api/v3/index.json;
- User—来自Fast Reports帐户的电子邮箱;
- Password—来自Fast Reports帐户的密码。

您将看到存储库:

现在我们将安装FastReport Core 包。为此,请转到“Packages”选项卡并通过FastReport存储库过滤包。然后,安装找到的包。

安装成功,您将收到通知。

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

using System.Drawing;
using FastReport;
using FastReport.Export.Pdf;
using FastReport.Utils;

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

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();
}

最后,启动控制台应用程序。如果您收到响应 Process finished with exit code 0,那么您之前做的每一步,打开报告,在我们的例子中,它是路径:

 /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根本没有它。

完整的程序清单

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");
}

以上就是本文全部内容,如果您有任何问题需了解详情,请评论或私聊我,欢迎大家加入官方社群互相交流~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/571970.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

低代码平台简介(10家国产化低代码平台详细介绍)

低代码平台:一个号称能在几分钟的时间里开发一套企业内部都可使用的系统开发工具。 本人曾做过一个测试,2人,历时8小时,用低代码平台成功搭建出一套“客户管理系统”。该系统所需要的15个子模块与40个界面。同样的功能如果用传统编…

什么是 sudo,为什么它如此重要?

在当今的技术世界中,Linux 操作系统广泛应用于各种环境,包括个人计算机、服务器和嵌入式设备。作为一种强大的开源操作系统,Linux 提供了丰富的安全功能,以保护系统和用户的数据安全。在 Linux 安全领域中,sudo 是一项…

接口测试的请求和响应

接口测试的请求和响应 在软件开发中,接口测试是必不可少的一环节。接口测试主要涉及到测试请求和响应的过程。请求是指客户端向服务器发送的一些指令或数据,而响应则是服务器对这些请求做出的回应。 请求通常包括请求方法、请求头以及请求体。请求方法有…

信息安全服务资质认证CCRC证书‖中国网络安全审查技术与认证中心

随着CCRC信息安全服务资质持证企业的增加,很多企业看着自己的同行纷纷获的CCRC证书,自身也想进行申报,但由于之前没有做过了解,像个无头苍蝇一样,所以对该资质申报的条件要求、申报的好处又不是那么清楚,接…

重塑DeFi:深入了解Solaris Network

Solaris Network已经在充满活力的去中心化金融(DeFi)领域崭露头角,成为一家颠覆性的平台,使用户能够创造和交易合成资产。凭借其致力于多链集成、创新功能和以社区为中心的方法,Solaris Network正在改变DeFi的格局&…

【PXIE301-203】基于PXIE总线的4路Cameralink Base图像模拟源

产品概述 PXIE301-203一款基于PXI Express总线的高性能4路CameraLink Base图像模拟源,板卡采用Xilinx的高性能Kintex-7系列FPGA作为主控制器,实现PCI Express总线接口的转换,图像数据的缓存,以及CameraLink图像时序的控制。该板卡…

记录::opencv编译,cmake编译vs动态库

环境:window7,cmake-gui,vs2013 opencv:3.4.4 opencv_contrib:3.4.4(nonfree模块,主要为了用sift) 链接:https://pan.baidu.com/s/1OXg2IRaxTLTVqM2PVR2ZFA 提取码&a…

2023年企业网盘推荐:实测好用的工具

在数字化时代,企业内部的文件、资料等信息量越来越大。如何高效地管理和共享这些数据,成为企业管理者亟需解决的问题。企业网盘作为一种新型的信息技术工具,以其方便快捷、安全可靠等优点,受到越来越多企业的青睐。 企业网盘工具的…

非计算机专业 3 年外包闭关 180 天入职字节,鬼知道我是怎么过来的

面试 大家都知道,现在的测试面试是越来越难了!主要原因无非是两个: 随着测试这个行业的兴起,不管是在家待业的、对自己现在工作不满意的、大学选错专业的、缺钱的、想自己学的等等这些人绝大部分都是选择了去学习测试&#xff01…

Linux:root登陆显示bash-4.2问题处理

情况描述: root账号登陆服务器后,显示如下。 正常显示应该是下面这样: userhostname 原因: 是因为/root目录下没有配置文件 解决: 使用root用户登录,再home目录中创建用户对应的文件夹,mkdi…

【HarmonyOS】【FAQ】HarmonyOS应用开发相关问题解答(二)

【写在前面】 之前和大家分享过一下HarmonyOS应用开发相关问题,今天继续和大家分享! 【前提简介】 本文档主要总结HarmonyOS开发过程中可能遇到的一些问题解答,主要围绕HarmonyOS展开,包括但不限于不同API版本HarmonyOS开发、UI…

CopyOnWriteArrayList中add有锁了为什么要copy

CopyOnWriteArrayList中add有锁了为什么要copy 看之前一定要去看之前juc常用中看下volatile的作用 主要还是看写操作,下面是他的源码 /*** Appends the specified element to the end of this list.** param e element to be appended to this list* return {code t…

Nagle算法原理与实现详解

文章目录 背景Nagle算法详解算法实现实现开启与关闭Nagle算法 Nagle算法与延迟ACK参考 背景 TCP的数据流大致可以被分成两类: 交互式数据流 TCP交互数据流指的是:TCP连接中传输的所有数据的总和,包括控制命令(用于管理网络中连接…

Lenovo IdeaPad 330-15IKB 81DE电脑 Hackintosh 黑苹果efi引导文件

原文来源于黑果魏叔官网,转载需注明出处。(下载请直接百度黑果魏叔) 硬件配置 硬件型号驱动情况 主板Lenovo IdeaPad 330-15IKB 81DE 处理器Intel(R) Core(TM) i3-8130U CPU 2.20GHz (Kaby Lake Refresh)已驱动 内存M471A1G44AB0-CWE * …

jetson nano csi摄像头 tensorrt 运行yolov8检测

jetson nano csi摄像头 tensorrt 运行yolov8检测 1. 在本地电脑训练环境下将onnx模型导出yolov8 导出onnx 模型使用onnxsim优化onnx 模型2. 在jetson nano下 转换到tensorrt模型配置好环境后 使用trtexec 生成engine使用python tensorrt 读取csi摄像头进行预测1. 在本地电脑训练…

AnsiConsole-能够编写 ANSI 转义序列的控制台

Spectre.Console 是一款 .NET 库,提供了一种简单但强大的方式来创建美观和交互式的控制台应用程序。它允许开发人员轻松构建具有颜色、表格、进度条等功能的富命令行界面 (CLI)。 功能 Spectre.Console 的一些显着功能包括: 颜色:Spectre.C…

实时时钟 RTC(2)

RTC 使能与停止 RTC 上电后立即启动,不可关闭,软件应在32K 晶体振荡器完全起振后再设置当前时间;在晶体振荡器起振之前芯片使用内部环振计时,偏差较大。 RTC 时间设置 软件可以在任意时刻直接设置RTC 时间寄存器;由于…

数据结构与算法(八)

二叉搜索树 二叉树:二叉树每个结点最多有两个子树 二叉搜索树: (BST) 其实就是在普通的二叉树上加了一些限制 没有任何限制,二叉搜索树插入子结点的时候有一些特殊的要求 二叉搜索树的性质: 非空左子树所有的键值小于其根结点的键值非空右子树所有的…

Java的Atomic原子类

Java SDK 并发包里提供了丰富的原子类,我们可以将其分为五个类别,这五个类别提供的方法基本上是相似的,并且每个类别都有若干原子类。 对基本数据类型的变量值进行原子更新;对对象变量的指向进行原子更新;对数组里面的…