程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Java FineReport報表對象導出EXCEL的四種方法

Java FineReport報表對象導出EXCEL的四種方法

編輯:關於JAVA

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的四種方法,願望對年夜家有所贊助!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved