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

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

多层网关已成过去,网关多合一成潮流,网关改造正当时丨Higress 正式发布 1.0 版本

作者:Higress 团队 01 前言 K8s 通过 Ingress / Gateway API 将网关标准化,逐步将安全网关、流量网关、微服务网关内聚,解决从单体到微服务到云原生多层网关的复杂度,合久必分,分久必合,多层网关已成过去…

(3)NUC980 kenerl编译

解压 用到的配置文件位置: /NUC980-linux-4.4.y-master/arch/arm/configs/nuc980_defconfig 执行: 编译linux内核源码。了解其 配置文件在 arch/arm/configs/nuc980_defconfig (1) make nuc980_defconfig 载入配置文件 (2) make menuconfig --->Devi…

SAP MM 根据采购订单反查采购申请

如何通过采购订单号查询到其前端的采购申请号。 首先从采购申请的相关报表着手,比如ME5A, 发现它是可以满足需求的。 例如:如下的采购订单, 该订单是由采购申请10003364转过来的。 如果想通过这个采购订单找到对应的采购申请,在…

Python3中goto的用法

Python3代码指定跳转可以使用goto这个库: 安装: pip install goto-statement 一般安装的版本是1.2 需要做以下修改才能正常使用: python 使用goto,遇到的问题解决_奶嘴偷走初吻的博客-CSDN博客python goto 出现报错:Attribut…

情绪管理ABC法

情绪管理ABC法 是由著名心理学家艾利斯(Albert Ellis)提出的一种情绪管理方法。 模型介绍 情绪,不取决于发生的事实,取决于我们如何看待这件事ABC理论认为,我们的情绪©,其实与发生的事件(A)无关&…

类的成员之:构造器(构造方法)

1.构造器的特征: 它具有与类相同的名称它不声明返回值类型。(与声明为void不同)不能被static、final、synchronized、abstract、native修饰,不能有return语句返回值 2.构造器的作用: 1.创建对象2.初始化对象的…

PID算法在流量控制中的应用

目录 增量式或位置式 目录 增量式或位置式 PID控制周期 T1 时间 T2 约4ms PID C代码 最近有小伙伴向我提问关于PID的问题:通过比例阀控制水流速度(流量), 使用增量式还是位置式 PID?他的比例法驱动频率是500Hz…

linux环境搭建

🎈个人主页:🎈 :✨✨✨初阶牛✨✨✨ 🐻推荐专栏: 🍔🍟🌯C语言进阶 🔑个人信条: 🌵知行合一 🍉本篇简介:>:介绍学习如何使用云服务器搭建Linux的环境. 前言 linux介绍…

【计算机网络中ip概念总结】【平时我们说的ip 到底是什么】【计算机网络中 ip地址是什么】

专注 效率 记忆 预习 笔记 复习 做题 欢迎观看我的博客,如有问题交流,欢迎评论区留言,一定尽快回复!(大家可以去看我的专栏,是所有文章的目录)   文章字体风格: 红色文字表示&#…

Linux系统之编译安装python3

Linux系统之编译安装python3 一、python3介绍1. python3简介2. python3特点 二、检查本地环境1. 检查本地操作系统版本2. 检查内核版本3. 检查当前python版本 三、安装前准备工作四、下载python最新版本源码包1. 访问python官网2. 创建下载目录3. 下载python源码包4. 解压pytho…

Redis 常见面试题

1. 认识Redis Redis是一个开源的内存数据结构存储,Redis是一个基于内存的数据库,对数据的读写都在内存中完成,因此数据读写速度非常快,常用于缓存,分布式锁等,MySQL的表数据都存储在 t_order.ibd&#xff…

国内可以免费使用的GPT

一、wetab新标签页 教程:https://diwlwltzssn.feishu.cn/docx/MnHhdvxATomBnMxfas2cm8wWnVd 装GPT界面:https://microsoftedge.microsoft.com/addons/detail/wetab%E5%85%8D%E8%B4%B9chatgpt%E6%96%B0%E6%A0%87%E7%AD%BE%E9%A1%B5/bpelnogcookhocnaokfp…

华为OD机试真题(Java),跳跃游戏 II(100%通过+复盘思路)

一、题目描述 给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。 每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。换句话说,如果你在 nums[i] 处,你可以跳转到任意 nums[i + j] 处: 0 <= j <= nums[i]0i + j <返回到达 nums[n - 1] 的最小跳跃…

C++学习笔记(四): 类、头文件、对象

一个类定义了一个类型&#xff0c;以及与其关联的一组操作。所谓类&#xff0c;是用户自定义的数据类型。 类机制是C最重要的特性之一。实际上&#xff0c;C最初的一个设计焦点就是能定义使用上像内置类型一样自然的类类型&#xff08;class type&#xff09;。 类的定义一般分…

Java之旅(三)

Java 输出&#xff1a;println()、print() 使用 println() 方法在 Java 中输出值或打印文本。 System.out.println("Hello World!"); println() 可以根据需要添加任意数量的方法。请注意&#xff0c;它将为每个方法添加一个新行&#xff1a; System.out.println(&…

Unity2D骨骼动画制作之单张图片编辑

1、打开骨骼制作面板 在Sprite Editor左侧选项&#xff0c;选择Skinning Editor 2、 &#xff08;1&#xff09;骨骼制作 Preview Pose 预览模式&#xff0c;可以预览动作并不会真正的改变设置 Reset Pose 将角色骨骼和关节恢复到原始位置 Edit Bone 编辑骨骼&#xff0c;…

SUSE系统上安装HANA

一:安装SUSE操作系统 1.1 准备安装镜像 SLE-15-SP1-安装程序-DVD-x86_64-GM-DVD1 SLE-15-SP1-软件包-x86_64-GM-DVD1 SAP HANA安装文件 IMDB_SERVER20_032_0-80002031.SAR 1.2 引导系统 1.3 选择要安装的产品 SUSE Linux Enterprise Server for SAP Applications 15 SP…

【MySQL】MySQL间隙锁--幻读解决原理

文章目录 一、间隙锁概念二、测试间隙锁范围加锁三、测试等值间隙锁 一、间隙锁概念 当我们用范围条件而不是相等条件检索数据&#xff0c; 并请求共享或排他锁时&#xff0c;InnoDB 会给符合条件的已有数据记录的索引项加锁&#xff1b;对于键值在条件范围内但并不存在的记录…

chatgpt赋能python:用Python做股票分析

用Python做股票分析 在当今的股市中&#xff0c;数据分析和预测已经变得十分重要。Python作为最流行的编程语言之一&#xff0c;不仅易于学习&#xff0c;还有非常强大的数据处理和分析能力。在本文中&#xff0c;我们将探讨如何用Python进行股票分析。 数据收集 要进行股票…

如何利用宝塔面板快速搭建Wordpress网站?

本章教程&#xff0c;主要介绍一下&#xff0c;如何利用宝塔面板快速搭建Wordpress网站。 目录 一、 前置条件 二、 打开宝塔面板 三、解析域名 四、安装界面 五、主题安装 六、网站预览 一、 前置条件 需要准备一台Linux服务器&#xff0c;系统版本使用centos 7.X。 使用…