如何從 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.pswp.cn/news/166008.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/166008.shtml
英文地址,請注明出處:http://en.pswp.cn/news/166008.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

合并PDF出現OOM異常

優化方法一:使用PdfSmartCopy類代替PdfCopy類。這個類可以在合并PDF文件時,檢測并消除重復的對象,從而減少內存的占用。您可以參考以下代碼示例: //創建一個Document對象 Document document new Document();//創建一個PdfSmartC…

SpringBoot 項目實現讀寫分離

SpringBoot 項目實現讀寫分離 一、讀寫分離介紹 當使用Spring Boot開發數據庫應用時,讀寫分離是一種常見的優化策略。讀寫分離將讀操作和寫操作分別分配給不同的數據庫實例,以提高系統的吞吐量和性能。 讀寫分離實現主要是通過動態數據源功能實現的&…

我的虛擬人物介紹

背景 大家好,我是小欣,是這個博客的虛擬助手。在這里,我將為大家提供各種有趣、實用、甚至是意想不到的信息。作為一個年輕的語言模型,我的目標是為你們呈現出最有趣和有深度的內容。 我喜歡與大家分享知識、解答問題&#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…

淘寶88vip退費問題

前一段時間,雙十一活動,想著開個淘寶的88vip領卷買東西會實惠一點,另外,它自帶的權益也不錯,有餓了嗎、網易云、優酷或者芒果的。但是到了當天發現,一個vip的卷也用不了,頓感什么惱火&#xff0…

synchronized的輕量級鎖居然不會自旋?

《Java并發編程的藝術》中說到「如果失敗,表示其他線程競爭鎖,當前線程便嘗試使用自旋來獲取鎖」,并且下文所配的流程圖中明確表示自旋失敗后才會升級為重量級鎖,但《深入理解Java虛擬機》又說「如果出現兩條以上的線程爭用同一個…

超聲波雪深傳感器冬季里的科技魔法

在冬季的某個清晨,當你打開大門,被厚厚的積雪覆蓋的大地映入眼簾,你是否曾想過,這片雪地的深度是多少?它又如何影響著我們的生活和環境?今天,我們將為你揭開這個謎團,介紹一款神秘的…

眼鏡清洗機原理是怎么樣的?2023年眼鏡清洗機推薦

在日常生活中有許多小伙伴是因為看太多書或者是看太多電子產品導致近視佩戴上了眼鏡,畢竟眼鏡佩戴上后就再也離不開它了,像日常佩戴的眼鏡上會積累非常多污垢以及堆積細菌,而我們手動清洗眼鏡時不能除菌也不能清潔到縫隙中,像眼鏡…

thingsboard的WebSocket API的使用

1、參考文檔 Working with telemetry data | ThingsBoard Community Edition 2、訂閱的命令 我們需要訂閱不同的數據,那么該如何來填寫參數呢,你需要參考后端代碼 TelemetryPluginCmdsWrapper 以及訂閱返回的結果參考類:TelemetrySubscriptionUpdate 鏈接地址: https:/…

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 出現這個錯誤…