千家信息网

Java报表工具FineReport导出EXCEL的四种API

发表于:2025-01-24 作者:千家信息网编辑
千家信息网最后更新 2025年01月24日,在实际的应用中会经常需要将数据导出成excel,导出的方式除原样导出还有分页导出、分页分sheet导出和大数据量导出。对于excel 2003版,由于限制了每个sheet的最大行数和列数,大数据量导出
千家信息网最后更新 2025年01月24日Java报表工具FineReport导出EXCEL的四种API

在实际的应用中会经常需要将数据导出成excel,导出的方式除原样导出还有分页导出、分页分sheet导出和大数据量导出。对于excel 2003版,由于限制了每个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.1 服务器承受范围内

可以承受的范围是:数据量大,超过了EXCEL的最大行数但不是非常非常大,比如10万条,且数据不复杂,在内存足够且网络没有断的情况下可以正常导出。导出时,超出Excel最大行或列的数据会在下一个Sheet中显示。但是Excel的行数和列数是有限制的,如Excel2003其行数最大限制为65536行,列数最大限制为256列。

4.1.2 服务器无法承受

无法承受的范围是主要是数据量大,且非常大,比如几十万几百万甚至更多,可能因为内存等的限制而出现导出失败。而导出的结果时,打开导出失败的Excel,其内容是无效的。

对于这两种导出结果,其主要原因在于数据量与数据复杂程度(列数)究竟有多大,在没有用行引擎的情况下就会有一个临界点,低于临界点的时候可以导出成功即导出的内容有多个sheet,否则导出失败,内容无效。所以,对于大数据量报表,通常使用行式引擎来展现,这种情况下,导出Excel始终成功。在启用行式引擎的大数据量报表导出Excel时,是将其分成多个.xls文件,且是以一个压缩包文件的格式传输到客户端的。

4.2 启用行式引擎的大数据量报表导出

对于大数据量报表,通常使用行式引擎来展现,这种情况下,导出Excel始终成功。因为启用行式引擎的大数据量报表导出Excel时,是将其分成多个.xls文件,且是以一个压缩包文件的格式传输到客户端的。

比如,大数据量报表有100w行数据,设置行式引擎,每页显示30行。导出的结果会是41Excel,前40Excel每个24990行,最后一个Excel400行,41Excel压缩为zip包传到客户端下载。


数据 情况 报表 引擎 文件 结果 承受 最大 成功 多个 限制 代码 内容 服务器 服务 原样 客户 接口 效果 效果图 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 经济学与网络安全交叉领域有哪些 软件开发公司哪个实力强 软件开发学习哪个专业 戴尔刀片服务器一般功率多大 山东新华网络安全 河北工业软件开发服务价格 飞腾服务器什么价格 怀化风控数据库厂家 用友软件的数据库怎么安装 无法侦测到服务器的时区 虎诺互联网科技 查询和王洪敏的数据库原理及应用 一台电脑怎么弄两个服务器 虚拟机如何保存数据库 大学生网络安全宣讲演讲稿 常用的文献索引数据库有哪些 实用网络安全技术感受 arm服务器 工作负载 云服务器好用吗 足浴管理系统需要服务器吗 怎么更改失信人员数据库 免费的数据库客户端强大的 河南星游网络技术有限公司 服务器安全密码策略 两年软件开发经验工资 无锡数字化智慧医院软件开发 无线传感器网络技术题目 国三网络技术分值 交警系统软件开发公司 戴尔服务器拆机内存图片
0