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

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

如今,越来越多的服务提供业务云解决方案,例如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.mzph.cn/news/166008.shtml

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

相关文章

我的虚拟人物介绍

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

AI“胡说八道”?怎么解?

原创 | 文 BFT机器人 01 引言 近年来,人工智能产业迅猛发展,大型语言模型GPT-4发展势头强劲,OpenAI推出ChatGPT、微软推出Bing、马斯克推出“最好的聊天机器人Grok”……科技巨头纷纷入局AI领域,引入人工智能作为办公工具的行业…

合封芯片未来趋势如何?合封优势能否体现?

芯片已经成为现代电子设备的核心组件。为了提高系统的性能、稳定性和功耗效率,一种先进的芯片封装技术——合封芯片应运而生。 合封芯片作为一种先进的芯片封装技术,合封芯片是一种将多个芯片(多样选择)或不同的功能的电子元器件…

AIGC专题报告:生成式人工智能用例汇编

今天分享的是AIGC系列深度研究报告:《AIGC专题报告:生成式人工智能用例汇编》。 (报告出品方:德勤) 报告共计:16页 生成式人工智能(AI)的兴起 生成式AI给人类文明创造了无限的可…

文心一言 VS 讯飞星火 VS chatgpt (142)-- 算法导论12.1 2题

二、用go语言,二叉搜索树性质与最小堆性质(见 6.1 节)之间有什么不同?能使用最小堆性质在 O(n)时间内按序输出一棵有 n 个结点树的关键字吗?可以的话,请说明如何做,否则解释理由。 文心一言: 在二叉搜索树(Binary …

ruoyi 若依框架采用第三方登录

在项目中,前后端分离的若依项目,需要通过统一认证,或者是第三方协带认证信息跳转到本系统的指定页面。需要前后端都做相应的改造,由于第一次实现时已过了很久,再次重写时,发现还是搞了很长时间,…

PasteNow for mac剪贴板工具

PasteNow 是一款简单易用的剪贴板管理工具,可帮助用户快速存储和管理剪贴板上的文本和图片内容。用户可以使用 PasteNow 软件快速将文本内容保存到不同的笔记或页面中,也可以方便地将剪贴板上的图片保存到本地或分享给其他应用程序。 此外,P…

vue 通过ref调用router-view子组件的方法

由于用的vue2.7版本,但用了vue3 setup的语法; 注意:是vue2的template结构,vue3的setup语法;非这种情况需要举一反三。 处理方案: 1、对router-view加上ref template修改 直接对router-view加上ref&#x…

金蝶云星空和四化智造MES(WEB)单据接口对接

金蝶云星空和四化智造MES(WEB)单据接口对接 对接系统:四化智造MES(WEB) MES系统是集成生产管理、品质管理、设备管理、BI数据中心、库存管理、工时管理、数据采集、看板管理等为一体的综合性生产管理系统。通过强调制造…

wagtail-安装配置

系列文章目录 文章目录 系列文章目录安装虚拟环境安装wagtail查看安装后的包 创建wagtail项目安装依赖迁移创建超级用户运行项目 安装虚拟环境 https://blog.csdn.net/gsl371/article/details/117917857 安装wagtail (wagenv) C:\djproject\wagprj>pip list Package V…

synchronized的轻量级锁居然不会自旋?

《Java并发编程的艺术》中说到「如果失败,表示其他线程竞争锁,当前线程便尝试使用自旋来获取锁」,并且下文所配的流程图中明确表示自旋失败后才会升级为重量级锁,但《深入理解Java虚拟机》又说「如果出现两条以上的线程争用同一个…

超声波雪深传感器冬季里的科技魔法

在冬季的某个清晨,当你打开大门,被厚厚的积雪覆盖的大地映入眼帘,你是否曾想过,这片雪地的深度是多少?它又如何影响着我们的生活和环境?今天,我们将为你揭开这个谜团,介绍一款神秘的…

眼镜清洗机原理是怎么样的?2023年眼镜清洗机推荐

在日常生活中有许多小伙伴是因为看太多书或者是看太多电子产品导致近视佩戴上了眼镜,毕竟眼镜佩戴上后就再也离不开它了,像日常佩戴的眼镜上会积累非常多污垢以及堆积细菌,而我们手动清洗眼镜时不能除菌也不能清洁到缝隙中,像眼镜…

error: ‘for‘ loop initial declarations are only allowed in C99 or C11 mode

在使用for循环时,在循环内定义变量,出现如下错误 [Error] ‘for’ loop initial declarations are only allowed in C99 or C11 mode [Note] use option -stdc99,-stdgnu99,-stdc11 or-stdgnu11 to compile your code 出现这个错误…

使用Pytorch从零开始构建GRU

门控循环单元 (GRU) 是 LSTM 的更新版本。让我们揭开这个网络的面纱并探索这两个兄弟姐妹之间的差异。 您听说过 GRU 吗?门控循环单元(GRU)是更流行的长短期记忆(LSTM)网络的弟弟,也是循环神经网络&#x…

安索夫矩阵(ANSOFF)

👉安索夫矩阵是策略管理之父安索夫博士于1957年提出的营销策略模型,该模型以“产品”和“市场”作为两大基本面,提出了4种不同组合下的营销策略,是营销分析中应用最广泛的工具之一。其主要逻辑是通过选择4种不同的成长性策略来实现…

新苹果手机如何导入旧手机数据?解决方案来了,记得收藏!

为了保持其竞争优势,苹果公司不断推出新的产品和服务,因此苹果手机的更新换代速度是比较快的。正巧最近刚出了iPhone15,相信很多小伙伴已经换上了期待已久的新手机。 更换新手机后,大家都会面临一个问题:新苹果手机如…

java 手机商城免费搭建+电商源码+小程序+三级分销+SAAS云平台

【SAAS云平台】打造全行业全渠道全场景的SaaS产品,为店铺经营场景提供一体化解决方案;门店经营区域化、网店经营一体化,本地化、全方位、一站式服务,为多门店提供统一运营解决方案;提供丰富多样的营销玩法覆盖所有经营…

如何预防数据泄露?六步策略帮您打造企业信息安全壁垒

大家好!我是恒小驰,今天我想和大家聊聊一个非常重要的话题——如何预防数据泄露。在这个数字化的时代,数据已经成为了我们生活中不可或缺的一部分。然而,随着数据的价值日益凸显,数据泄露的风险也随之增加。企业应该如…