Java FineReport報表對象導出EXCEL的四種方法。本站提示廣大學習愛好者:(Java FineReport報表對象導出EXCEL的四種方法)文章只能為提供參考,不一定能成為您想要的結果。以下是Java FineReport報表對象導出EXCEL的四種方法正文
在現實的運用中會常常須要將數據導出成excel,導出的方法除原樣導出還有分頁導出、分頁分sheet導出和年夜數據量導出。關於excel2003版,限制了每一個sheet的最年夜行數和列數,年夜數據量導出時會默許時分多個sheet,而excel2007不會湧現如許的成績。這些導出方法在JAVA法式平分別有分歧的接口來完成:
1、 原樣導出
原樣導出就是不預覽直接導出excel
其法式接口代碼以下:
outputStream = new FileOutputStream(new File("E:\\ExcelExport.xls")); ExcelExporter excel = new ExcelExporter(); //導出2007版 outputStream = new FileOutputStream(new File("E:\\ExcelExport.xlsx")); excel Excel2007Exporter excel = new Excel2007Exporter(); excel.export(outputStream, rworkbook);
後果圖:
2、 分頁導出
分頁導出,假如報表模版是分頁的,會依照分頁的成果情勢導出,反復的題目等也會反復。
其法式接口代碼以下:
outputStream = new FileOutputStream(new File("E:\\PageExcelExport.xls")); PageExcelExporter page = new PageExcelExporter(ReportUtils.getPaperSettingListFromWorkBook(rworkbook)); //導出2007版 outputStream = new FileOutputStream(new File("E:\\PageExcelExport.xlsx")); excel PageExcel2007Exporter page = new PageExcel2007Exporter(ReportUtils.getPaperSettingListFromWorkBook(rworkbook)); page.export(outputStream, rworkbook);
後果圖:
3、 分頁分sheet導出
分頁分Sheet導出時報表成果的每頁為一個Sheet保留在Excel文件中
其代碼以下:
outputStream = new FileOutputStream(new File("E:\\PageSheetExcelExport.xls")); PageToSheetExcelExporter sheet = new PageToSheetExcelExporter(ReportUtils.getPaperSettingListFromWorkBook(rworkbook)); //導出2007版outputStream = new FileOutputStream(new File("E:\\PageSheetExcelExport.xlsx")); excel PageToSheetExcel2007Exporter sheet = new PageToSheetExcel2007Exporter(ReportUtils.getPaperSettingListFromWorkBook(rworkbook)); sheet.export(outputStream, rworkbook);
後果圖:
4、 年夜數據量導出
這是比擬罕見的,例如以50000行動一個excel文件
其代碼以下:
outputStream = new FileOutputStream(new File("E:\\LargeExcelExport.zip")); LargeDataPageExcelExporter large = new LargeDataPageExcelExporter(ReportUtils.getPaperSettingListFromWorkBook(rworkbook), true); //導出2007版outputStream = new FileOutputStream(new File("E:\\LargeExcelExport.xlsx")); excel LargeDataPageExcel2007Exporter large = new LargeDataPageExcel2007Exporter(ReportUtils.getPaperSettingListFromWorkBook(rworkbook), true); large.export(outputStream, rworkbook);
關於年夜數據量導出報表時,能夠會湧現以下兩種情形:
一,導出勝利,數據會顯示在多個Sheet中;
二,二,導出掉敗,導出的Excel內容有效。湧現如下情況的緣由重要有兩點:
4.1 沒有啟用行式引擎的年夜數據量報表導出
在沒有啟用行式引擎的情形下,也會湧現兩種情形:辦事器可以蒙受的情形下導出勝利,辦事器沒法蒙受的情形下導出掉敗,上面我們分離看下其成果:
4.1.1 辦事器蒙受規模內
可以蒙受的規模是:數據量年夜,跨越了EXCEL的最年夜行數但不長短常異常年夜,好比10萬條,且數據不龐雜,在內存足夠且收集沒有斷的情形下可以正常導出。導出時,超越Excel最年夜行或列的數據會鄙人一個Sheet中顯示。然則Excel的行數和列數是無限制的,如Excel2003其行數最年夜限制為65536行,列數最年夜限制為256列。
4.1.2 辦事器沒法蒙受
沒法蒙受的規模是重要是數據量年夜,且異常年夜,好比幾十萬幾百萬乃至更多,能夠由於內存等的限制而湧現導出掉敗。而導出的成果時,翻開導出掉敗的Excel,其內容是有效的。
關於這兩種導出成果,其重要緣由在於數據量與數據龐雜水平(列數)畢竟有多年夜,在沒有效行引擎的情形下就會有一個臨界點,低於臨界點的時刻可以導出勝利即導出的內容有多個sheet,不然導出掉敗,內容有效。所以,關於年夜數據量報表,平日應用行式引擎來展示,這類情形下,導出Excel一直勝利。在啟用行式引擎的年夜數據量報表導出Excel時,是將其分紅多個.xls文件,且是以一個緊縮包文件的格局傳輸到客戶真個。
4.2 啟用行式引擎的年夜數據量報表導出
關於年夜數據量報表,平日應用行式引擎來展示,這類情形下,導出Excel一直勝利。由於啟用行式引擎的年夜數據量報表導出Excel時,是將其分紅多個.xls文件,且是以一個緊縮包文件的格局傳輸到客戶真個。
好比,年夜數據量報表有100w行數據,設置行式引擎,每頁顯示30行。導出的成果會是41個Excel,前40個Excel每一個24990行,最初一個Excel為400行,41個Excel緊縮為zip包傳到客戶端下載。
以上內容是針對Java FineReport報表對象導出EXCEL的四種方法,願望對年夜家有所贊助!