如何从 C# 制作报表到 FastReport Cloud

news2024/11/18 11:26:35

众所周知,我们的世界在不断发展,新技术几乎每天都会出现。如今,不再需要在办公室内建立整个基础设施、雇用人员来监控设备、处理该设备出现的问题和其他困难。

如今,越来越多的服务提供业务云解决方案,例如FastReport Cloud。我们的服务使开发团队免去不必要的工作;您不再需要考虑如何部署项目、在哪里租用或购买服务器最好、最有利可图,以及使用什么技术进行部署。这一切我们都已经解决了,你只需利用它即可。

    FastReport .net下载(qun:585577353)icon-default.png?t=N7T8https://www.evget.com/product/1861/download

如何使用FastReport云?

在本文中,我们将了解如何使用 SDK 在 FastReport Cloud 中创建报表并将其导出为任何方便的格式。

首先,我们创建一个项目并向其中添加 FastReport.Cloud.SDK.Web nuget 包。有了这个包,我们就可以方便地与 FastReport Cloud 进行通信,而无需 API。

我们还需要一个报告模板。此示例将使用我们演示中的 Box.frx:

模板框.frx

创建项目并向其添加所有必要的依赖项后,您可以继续分析示例。

首先,您需要在FastReport Cloud工作区中创建一个API密钥;为此,请点击链接https://fastreport.cloud。

单击包含 API 密钥的选项卡并创建一个新密钥。如果该密钥已存在,则可以通过右键单击它并从下拉列表中选择一个操作来复制它。

创建和复制 API 密钥

收到 API 密钥后,我们返回到我们的应用程序。我们将密钥写入一个单独的变量,如下例所示:

private const string ApiKey = "your API key";

接下来,我们需要创建将在程序中使用的主要对象:

var httpClient = new HttpClient();
httpClient.BaseAddress = new Uri("https://fastreport.cloud");
httpClient.DefaultRequestHeaders.Authorization = new FastReportCloudApiKeyHeader(ApiKey);
var subscriptions = new SubscriptionsClient(httpClient);
var rpClientTemplates = new TemplatesClient(httpClient);
var rpClientExports = new ExportsClient(httpClient);
var downloadClient = new DownloadClient(httpClient);
var subscription = (await subscriptions.GetSubscriptionsAsync(0, 10)).Subscriptions.First();
var templateFolder = subscription.TemplatesFolder.FolderId;
var exportFolder = subscription.ExportsFolder.FolderId;

之后,我们进入为云创建报告的阶段。你可以这样做:

TemplateCreateVM templateCreateVM = new TemplateCreateVM()
{
Name = "box.frx",
Content = Convert.FromBase64String(TestData.BoxReport)
//we send the frx file in byte format
};

在上面的示例中,我们已经有一个字节格式的报告。如果您有 frx 格式的文件,则可以使用以下示例:

TemplateCreateVM templateCreateVM = new TemplateCreateVM()
{
Name = "box.frx",
Content = File.ReadAllBytes("path to report")
//we send the frx file in byte format to the path
};

我们将 TemplateCreateVM 对象与报表一起上传到 FastReport.Cloud 工作区:

TemplateVM uploadedFile = await rpClientTemplates.UploadFileAsync(templateFolder, templateCreateVM);

现在我们将报告导出为我们需要的格式。首先,您需要决定未来文件的格式和名称。

ExportTemplateVM export = new ExportTemplateVM()
{
FileName = "box",
Format = ExportFormat.Pdf
//format to be exported
};

我们导出为 PDF 格式:

ExportVM exportedFile = await rpClientTemplates.ExportAsync(uploadedFile.Id, export) as ExportVM;
string fileId = exportedFile.Id;
int attempts = 3;
exportedFile = rpClientExports.GetFile(fileId);
while (exportedFile.Status != FileStatus.Success && attempts >= 0)
{
await Task.Delay(1000);
exportedFile = rpClientExports.GetFile(fileId);
attempts--;
}

我们通过报告完成了主要工作。我们收到了报告中的 pdf 文件:

结果导出

如果您想手动下载文件,请转到您的工作区并下载它,如下例所示:

下载导出的文件

您还可以使用以下示例通过 SDK 下载文件:

using (var file = await downloadClient.GetExportAsync(fileId))
{
using (var pdf = File.Open("report.pdf", FileMode.Create))
{
file.Stream.CopyTo(pdf);
}
}

现在您知道如何使用 SDK 在 FastReport Cloud 中创建、导出和下载文件。您可以通过以下链接找到本文中的示例:GitHub - FastReports/FastReport-Cloud。

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

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

相关文章

我的虚拟人物介绍

背景 大家好,我是小欣,是这个博客的虚拟助手。在这里,我将为大家提供各种有趣、实用、甚至是意想不到的信息。作为一个年轻的语言模型,我的目标是为你们呈现出最有趣和有深度的内容。 我喜欢与大家分享知识、解答问题&#xff0…

Comsol Multiphysics 6.2 for Mac建模仿真软件

COMSOL Multiphysics是一款多物理场仿真软件,旨在帮助工程师、科学家和研究人员解决各种复杂的工程和科学问题。该软件使用有限元分析方法,可以模拟和分析多个物理场的相互作用,包括结构力学、热传导、电磁场、流体力学和化学反应等。 COMSOL…

小辰的智慧树(差分+前缀和)

登录—专业IT笔试面试备考平台_牛客网 1.考虑总长度之和不能超过m,2考虑限制每棵树高度不能低于ci,如果用二分最短输能截到的高度,还要另外去判断,是否每棵树mid都能严格大于ci ,这样容易超时,换个角度&…

Linux:动静态库

目录 一、软硬链接 1、软链接 2、硬链接 二、动态库和静态库 编写一个库 ①静态库 使用静态库的方法 ②动态库 使用动态库的方法 库存在的意义 一、软硬链接 软硬链接的本质区别就是:有无独立的inode 软链接有独立的inode,也就意味着软链接是一…

Vue3 封装组件库并发布到npm仓库

一、创建 Vue3 TS Vite 项目 输入项目名称,并依次选择需要安装的依赖项 npm create vuelatest 项目目录结构截图如下: 二、编写组件代码、配置项和本地打包测试组件 在项目根目录新建 package 文件夹用于存放组件 (以customVideo为例&a…

「Verilog学习笔记」不重叠序列检测

专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点,刷题网站用的是牛客网 题目要求检测a的序列,a为单bit输入,每个时刻可能具有不同的值, 当连续的六个输入值符合目标序列表示序列匹配,当六个输入值的…

VINS-MONO代码解读----vins_estimator(重点部分)

1. 代码目录如下,重点和难点是factor部分,是关于IMU部分的,有较多关于IMU预积分公式的推导。 1. 条件变量con.wait读取测量值:getMeasurements() 读取buf中IMU和IMG的数据,并进行align,最后的结果是这样…

文章解读与仿真程序复现思路——电网技术 EI\CSCD\北大核心《考虑5G基站储能可调度容量的有源配电网协同优化调度方法》

这篇文章的标题涉及到以下关键概念: 5G基站: 提到了5G基站,这表明文章的焦点可能是与第五代移动通信技术相关的内容。5G技术对于提高通信速度、降低延迟以及支持大规模连接等方面有显著的改进,因此对于基站的电力需求和供应可能存…

创新指南|消费品牌2024重塑增长最值得关注的10个DTC零售策略

2023年对消费零售行业来说同样是挑战的一年,经济逆风和消费低迷迫在眉睫,而品牌零售商如何从库存积压中跳出来,努力应对增加的支出,实现可盈利的增长会是让每位CEO战略执行的第一优先级。2023年用什么策略于DTC?与全球…

[黑马程序员SpringBoot2]——开发实用篇3

目录: jetcache远程缓存方案jetcache本地缓存方案jetcache方法缓存j2cache基本操作springboot整合quartz​​​​​​​springboot整合task发送简单邮件发送多部件邮件消息简介购物订单案例-发送短信ActiveMQ安装springboot整合ActiveMQRabbitMQ安装springboot整合…

Navicat 技术指引 | GaussDB服务器对象的创建/设计(编辑)

Navicat Premium(16.2.8 Windows版或以上) 已支持对GaussDB 主备版的管理和开发功能。它不仅具备轻松、便捷的可视化数据查看和编辑功能,还提供强大的高阶功能(如模型、结构同步、协同合作、数据迁移等),这…

LangChain 8 模型Model I/O:输入提示、调用模型、解析输出

LangChain系列文章 LangChain 实现给动物取名字,LangChain 2模块化prompt template并用streamlit生成网站 实现给动物取名字LangChain 3使用Agent访问Wikipedia和llm-math计算狗的平均年龄LangChain 4用向量数据库Faiss存储,读取YouTube的视频文本搜索I…

YB4051系列设备是高度集成的 Li-lon 和 Li-Pol 线性充电器,针对便携式应用的小容量电池。

YB4051H 300mA 单电池锂离子电池充电器0.1 mA 终端,45nA 电池漏电流 概述: YB4051系列设备是高度集成的 Li-lon 和 Li-Pol 线性充电器,针对便携式应用的小容量电池。它是一个完整的恒流/恒压线性充电器。不需要外部感应电阻,由于…

Linux常用命令——blkid命令

在线Linux命令查询工具 blkid 查看块设备的文件系统类型、LABEL、UUID等信息 补充说明 在Linux下可以使用blkid命令对查询设备上所采用文件系统类型进行查询。blkid主要用来对系统的块设备(包括交换分区)所使用的文件系统类型、LABEL、UUID等信息进行…

React基础入门

文章目录 创建项目组件和事件更新状态导出组件jsx react是目前最流行的前端框架,几乎也不同太介绍了。 创建项目 首先下载node.js,安装成功后,最好换成国内的源 npm config set registry https://registry.npm.taobao.org然后就可以使用脚…

NVM得介绍和详细使用教程

NVM​​​​​​​(Node Version Manager)是一个用于管理多个Node.js版本的工具。它允许您在同一台计算机上轻松地切换和管理不同的Node.js版本。以下是NVM的介绍和详细使用教程: 安装NVM: 首先,您需要在计算机上安装N…

Echarts仪表盘3.0

代码&#xff1a; <html> <head><title>图表绘制</title><style type"text/css">#dashboard {width: 402px;height: 293px;margin: 50px auto;}</style> </head> <body><!-- 为ECharts准备一个具备大小&#xf…

ssm 服务器运维管理的论坛系统-98166(免费领取源码)计算机毕业设计选题开题+程序定制+论文书写+答辩ppt书写 包售后 全流程

摘 要 随着科学技术的飞速发展&#xff0c;社会的方方面面、各行各业都在努力与现代的先进技术接轨&#xff0c;通过科技手段来提高自身的优势&#xff0c;服务器运维管理的论坛系统当然也不能排除在外。服务器运维管理的论坛系统是以实际运用为开发背景&#xff0c;运用软件工…

c语言-数组长度的计算(结构体数组,字符串数组)

数组的长度我们可以直接根据函数声明得到数组的长度&#xff0c;或者可以通过计算的方法如下&#xff1a; 数组长度sizeof(数组名)/sizeof(数组类型) 测试代码如下&#xff1a;测试int整形数组&#xff0c;char字符数组&#xff0c;字符串数组&#xff0c;结构体数组。 #includ…

办公技巧:Word中插入图片、形状、文本框排版技巧

目录 一、插入图片排版技巧 二、添加形状排版技巧 三、插入“文本框”排版技巧 我们平常在制作word时候经常会遇到插入选项卡下的图片、形状和文本框这三种情况下&#xff0c;那么如何使得Word文档当中添加这三个元素的同时&#xff0c;又能保证样式美观呢&#xff0c;今天小…