反饋已提交

網絡繁忙

Excel 导出的多种方式

1. 概述

1.1 应用场景

在导出章节中我们介绍了 Excel 导出方式 ExcelExporter,此为原样导出。在 FineReport 中,导出 Excel 还有分页导出、分页分 sheet 导出、大数据量导出三种导出方式,那通过程序导出时,这三种该如何实现呢?

1.2 实现原理

1)原样导出 Excel2003

//原样导出excel2003
            outputStream = new FileOutputStream(new File("C:\\test\\ExcelExport.xls"));  
            ExcelExporter excel = new ExcelExporter();  
            excel.setVersion(true);
            excel.export(outputStream, workbook.execute(parameterMap,new WriteActor()));

2)原样导出 Excel2007

//原样导出excel2007
           outputStream = new FileOutputStream(new File("C:\\test\\ExcelExport.xlsx"));  
           StreamExcel2007Exporter excel1 = new StreamExcel2007Exporter();
           excel.export(outputStream, workbook.execute(parameterMap,new WriteActor()));

3)分页导出 Excel2003

//分页导出excel2003
            outputStream = new FileOutputStream(new File("C:\\test\\PageExcelExport.xls"));
            PageExcelExporter page = new PageExcelExporter(ReportUtils.getPaperSettingListFromWorkBook(workbook.execute(parameterMap,new WriteActor())));
            page.setVersion(true);
            page.export(outputStream, workbook.execute(parameterMap,new WriteActor()));

4)分页导出 Excel2007

//分页导出excel2007
            outputStream = new FileOutputStream(new File("C:\\test\\PageExcelExport.xlsx")); 
            PageExcel2007Exporter page1 = new PageExcel2007Exporter(ReportUtils.getPaperSettingListFromWorkBook(rworkbook));
            page1.export(outputStream, workbook.execute(parameterMap,new WriteActor()));

5)分页分 sheet 导出 Excel2003

//分页分sheet导出excel2003
            outputStream = new FileOutputStream(new File("C:\\test\\PageSheetExcelExport.xls"));
            PageToSheetExcelExporter sheet = new PageToSheetExcelExporter(ReportUtils.getPaperSettingListFromWorkBook(workbook.execute(parameterMap,new WriteActor())));
            sheet.setVersion(true);
            sheet.export(outputStream, workbook.execute(parameterMap,new WriteActor()));

6)分页分 sheet 导出 Excel2007

//分页分sheet导出excel2007
            outputStream = new FileOutputStream(new File("C:\\test\\PageSheetExcelExport.xlsx"));
            PageToSheetExcel2007Exporter sheet1 = new PageToSheetExcel2007Exporter(ReportUtils.getPaperSettingListFromWorkBook(rworkbook));
            sheet1.export(outputStream, workbook.execute(parameterMap,new WriteActor()));

7)大数据量导出(大数据量导出默认是 65512 行的 .xls 组成的压缩包)

//大数据量导出
            outputStream = new FileOutputStream(new File("C:\\test\\LargeExcelExport.zip"));
            LargeDataPageExcelExporter large = new LargeDataPageExcelExporter(ReportUtils.getPaperSettingListFromWorkBook(workbook.execute(parameterMap,new WriteActor())), true);
            //导出2007版outputStream = new FileOutputStream(new File("C:\\test\\LargeExcelExport.xlsx")); LargeDataPageExcel2007Exporter large = new LargeDataPageExcel2007Exporter(ReportUtils.getPaperSettingListFromWorkBook(rworkbook), true);
            large.export(outputStream, workbook.execute(parameterMap,new WriteActor()));

2. 示例

下面实现后台导出 Parameter.cpt 模板为以上各种格式的 Excel。

2.1 准备编译环境

编译程序前,需先创建一个 Java 工程环境,并且需要一个 Java 编辑器,如 Eclipse 或 idea 。

在编辑器工程中引入 FineReport 工程 JAR 包。包括安装的报表工程

  • %FR_HOME%\webapps\webroot\WEB-INF\lib目录下 fine 开头的 12 个 JAR 包。

  • %FR_HOME%\webapps\webroot\WEB-INF\lib目录下的 sqlite-jdbc.jar

  • %Tomcat_HOME%\libTomcat目录下的 servlet-api.jar

  • %JAVA_HOME%\jdk\lib JDK 目录下的 tools.jar

  • slf4j-simple-1.7.25.jar ,点击可下载:slf4j-simple-1.7.25.rar

  • 如果报表中需要查询数据库,还需要导入对应的 jdbc 驱动或者插件的 JAR 包(如使用 JSON 数据集,就要引入 JSON 数据集插件下的 JAR 包)。

详细引入过程可参考:编译Java程序 

2.2 编写 Java 程序

在编辑器中编写 Java 程序 ExportExcel.java,即引入必要类后,获取模板,将模板导出成指定格式的文件。完整代码可参见:

注:用户使用时,注意将示例代码中的工程路径、模板名称和导出路径替换为用户自己工程下的。

https://code.fanruan.com/demo/example/src/release/10.0/src/main/java/com/fr/io/ExportExcel.java

2.3 编译 Java 文件

Java 程序编写完成后,在编译器中编译 ExportExcel.java ,编译通过后,就会在代码中导出路径的文件夹下生成不同格式的文件,这样就导出成功了。如下图所示:

222

附件列表


主題: 原简体文档
  • 有幫助
  • 沒幫助
  • 只是瀏覽
  • 圖片不清晰
  • 用語看不懂
  • 功能說明看不懂
  • 操作說明太簡單
  • 內容有錯誤
中文(繁體)

滑鼠選中內容,快速回饋問題

滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。

不再提示

10s後關閉

獲取幫助
線上支援
獲取專業技術支援,快速幫助您解決問題
工作日9:00-12:00,13:30-17:30在线
頁面反饋
針對當前網頁的建議、問題反饋
售前咨詢
業務咨詢
電話:0933-790886或 0989-092892
郵箱:taiwan@fanruan.com
頁面反饋
*問題分類
不能為空
問題描述
0/1000
不能為空

反馈已提交

网络繁忙