做pc端網站平臺今日頭條熱點新聞
項目后端使用的java,試驗過積木報表(web界面類型的)、JasperReport(.jasper報表文件)、stimulsoft web版本(.mrt報表文件)
我們的項目是前后端分離的,用積木報表(開箱即用集成前后端的項目)的話 相當于要另外搭建一個類似 報表中心的站點,報表稍微復雜一點的時候,感覺用起來就很麻煩。
JasperReport也是一個開源的報表工具,功能是比較強大的,但是他上手不簡單,而且個人覺得官方文檔看起來可費勁了。最重要的是他支持導出的文件格式太少了,好像就支持2種導出格式。
stimulsoft report 是一個付費的報表工具,功能強大,用起來也比較容易上手。以前java有個項目用過,但是只要一加載報表,就很容易內存溢出。
其實上面那3種 如果加載的報表文件比較大的話,都是很容易導致內存溢出(因為報表的渲染是在服務器完成的,比如1個人請求報表時,數據量大小可能就10kb,但是因為每一頁都加載logo圖片,到報表出來可能就變成10M了,如果是1000個人同時請求,可想而知服務器的壓力)的。項目經常會有加載大文件的報表,所以上面那3種暫時yi不考慮,最后選用了?stimulsoft 的js版本,報表渲染的壓力就交給客戶端而不是服務器了,服務器只需要把數據的json返回給前端就好了。
1.登錄到官方網站(https://www.stimulsoft.com/en/)下載依賴包和license.key文件
2.在index.html文件按需引入js文件
<!-- stimulsolt報表 -->
<script type="module" src="src/library/stimulsoft/scripts/stimulsoft.reports.js"></script>
<script type="module" src="src/library/stimulsoft/scripts/stimulsoft.viewer.js"></script>
<script type="module" src="src/library/stimulsoft/scripts/stimulsoft.designer.js"></script>
<script type="module" src="src/library/stimulsoft/scripts/stimulsoft.blockly.editor.js"></script>
3.vue文件編寫
<template>
<!-- 報表 -->
<div id="viewerContent"></div>
<script>
里面用到的mrt文件是使用 stimulsoft designer 創(chuàng)建的文件
Stimulsoft.Base.StiLicense.loadFromFile('src/library/stimulsoft/reports/license.key') //加載秘鑰文件var mrtPath = '/src/reports/test.mrt' //mrt文件var report = Stimulsoft.Report.StiReport.createNewReport(); //創(chuàng)建報表report.loadFile(mrtPath); //加載報表文件var dataSet = new Stimulsoft.System.Data.DataSet("JSON"); //創(chuàng)建數據源對象const res = await Http.post('/api/report/getData') //向服務器請求json數據dataSet.readJson(res.data) //把json數據放到數據源中report.dictionary.databases.clear(); //清空之前的的數據源report.regData("JSON", "JSON", dataSet); //綁定數據源var options = new Stimulsoft.Viewer.StiViewerOptions(); //創(chuàng)建報表渲染配置對象// exports 是工具欄中導出按鈕的配置(默認顯示11種導出方式),按需進行配置顯示,false代表不顯示options.exports.showExportToHtml5 = false options.exports.showExportToOpenDocumentCalc = falseoptions.exports.showExportToXps = falseoptions.exports.showExportDataOnly = falseoptions.exports.showExportToCsv = falseoptions.exports.showExportToDocument = falseoptions.exports.showExportToExcel2007 = falseoptions.exports.showExportToImagePng = false //導出Png圖片options.exports.showExportToImageJpeg = falseoptions.exports.showExportToImageBmp = falseoptions.exports.showExportToPdf = false //導出pdfoptions.exports.showExportToPowerPoint = false //導出pptoptions.exports.showExportToWord2007 = false //導出wordoptions.exports.showExportToText = false //導出txt文件//options.exports.showExportDialog = false //點擊導出后是否顯示選項窗體//options.exports.showExportToHtml = false //導出html//options.exports.showExportToOpenDocumentWriter = false//options.exports.openAfterExport = false//options.exports.storeExportSettings = false//options.exports.showOpenAfterExport = falsevar viewer = new Stimulsoft.Viewer.StiViewer(options, "StiViewer", false); //報表渲染對象,并傳入渲染參數viewer.report = report;viewer.renderHtml("viewerContent"); //在id是viewerContent中渲染報表
4.關于報表多語言問題
報表的多語言是通過Stimulsoft.Base.Localization實現的,可以通過修改這個對象的值修改多語言。 可參考StiLocalization | main
出來的結果:
參考文檔:
Stimulsoft Publish
Reports and Dashboards
Stimulsoft | main