告別低效報表生成:使用 sigedi/jasper-report-bundle 提升效率

我們的項目使用symfony架構建,需要生成各種類型的報表,例如pdf、csv等。起初,我們嘗試使用一些通用的報表生成庫,但這些庫的配置復雜,生成的報表樣式難以定制,而且效率不高,尤其是在處理大量數據時,響應速度非常慢。這嚴重影響了用戶體驗。

為了解決這個問題,我開始尋找更專業的解決方案。最終,我發現了 sigedi/jasper-report-bundle 這個Symfony bundle。它集成了 Jaspersoft REST v2 客戶端,能夠輕松地與 Jaspersoft Server 進行交互,從而生成各種類型的報表。 這個bundle的優勢在于它簡化了與Jaspersoft Server的交互過程,并提供了Symfony友好的接口

安裝 sigedi/jasper-report-bundle 非常簡單,只需要使用composer

composer require sigedi/jasper_report_bundle

安裝完成后,bundle會自動注冊,并創建配置文件 jasper-report.yaml (位于 config/packages 目錄下)以及相應的 .env 文件條目。我們需要在 jasper-report.yaml 中配置 Jaspersoft Server 的地址、用戶名、密碼和組織ID:

sigedi_jasper_report:    host:      'http://localhost:8080/jasperserver'    username:  '%env(SIGEDI_JASPER_REPORT_USERNAME)%'    password:  '%env(SIGEDI_JASPER_REPORT_PASSWORD)%'    org_id:    '%env(SIGEDI_JASPER_REPORT_ORGID)%'    timeout:   50

在 .env 文件中設置相應的環境變量:

SIGEDI_JASPER_REPORT_USERNAME=jasperadminSIGEDI_JASPER_REPORT_PASSWORD=jasperadminSIGEDI_JASPER_REPORT_ORGID=

配置完成后,我們就可以在Symfony控制器中直接使用 ReportService 來生成報表了。由于bundle支持自動注入,我們可以直接在控制器中使用它:

use SymfonyComponentHttpFoundationRequest;use SigediJasperReportBundleReportService;public function reportAction(Request $request, ReportService $reportService){    $report = $reportService->runReport('/reports/TestReport', 'pdf');    $response = new Response($report);    $response->headers->set('Content-type', 'application/pdf');    $response->headers->set('Content-Disposition', 'inline; filename=Report.pdf');    $response->headers->set('Cache-Control', 'must-revalidate');    return $response;}

這段代碼非常簡潔,它調用 runReport 方法生成PDF報表,然后將其作為響應返回給客戶端。sigedi/jasper-report-bundle 還提供了其他配置選項,例如超時設置,可以根據實際需求進行調整。

使用 sigedi/jasper-report-bundle 后,我們顯著提升了報表生成的效率。以前處理大量數據時,報表生成需要幾分鐘甚至更長時間,現在只需要幾秒鐘就能完成。報表樣式也更加美觀,易于定制。更重要的是,代碼變得更加簡潔易懂,易于維護。

總而言之,sigedi/jasper-report-bundle 是一個非常優秀的Symfony bundle,它極大地簡化了報表生成的流程,并顯著提高了效率。如果你正在尋找一種高效、便捷的報表生成方案,強烈推薦你嘗試一下。

? 版權聲明
THE END
喜歡就支持一下吧
點贊7 分享