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

在实际的应用中会经常需要将数据导出成excel,导出的方式除原样导出还有分页导出、分页分sheet导出和大数据量导出。对于excel 2003版,由于限制了每个sheet的最大行数和列数,大数据量导出时会默认时分多个sheet,而excel2007不会出现这样的问题。这些导出方式在JAVA程序中分别有不同的接口来实现:

  1、原样导出

原样导出就是不预览直接导出excel 

其程序接口代码如下:

1  outputStream = new FileOutputStream(new File("E:\\ExcelExport.xls"));  
2  ExcelExporter excel = new ExcelExporter();  
3  //导出2007版 outputStream = new FileOutputStream(new File("E:\\ExcelExport.xlsx"));  excel Excel2007Exporter excel = new Excel2007Exporter();
4  excel.export(outputStream, rworkbook);

 

 效果图:


2分页导出

分页导出,如果报表模版是分页的,会按照分页的结果形式导出,重复的标题等也会重复。

其程序接口代码如下:

1  outputStream = new FileOutputStream(new File("E:\\PageExcelExport.xls"));
2  PageExcelExporter page = new PageExcelExporter(ReportUtils.getPaperSettingListFromWorkBook(rworkbook));
3 //导出2007版 outputStream = new FileOutputStream(new File("E:\\PageExcelExport.xlsx")); excel  PageExcel2007Exporter page = new PageExcel2007Exporter(ReportUtils.getPaperSettingListFromWorkBook(rworkbook));
4  page.export(outputStream, rworkbook);

 

效果图:


 3、分页分sheet导出

分页分Sheet导出时报表结果的每一页为一个Sheet保存在Excel文件中

其代码如下:

1  outputStream = new FileOutputStream(new File("E:\\PageSheetExcelExport.xls"));
2  PageToSheetExcelExporter sheet = new PageToSheetExcelExporter(ReportUtils.getPaperSettingListFromWorkBook(rworkbook));
3  //导出2007版outputStream = new FileOutputStream(new File("E:\\PageSheetExcelExport.xlsx")); excel PageToSheetExcel2007Exporter sheet = new PageToSheetExcel2007Exporter(ReportUtils.getPaperSettingListFromWorkBook(rworkbook));
4  sheet.export(outputStream, rworkbook);

效果图:


4、大数据量导出

这是比较常见的,例如以50000行为一个excel文件

其代码如下:

1  outputStream = new FileOutputStream(new File("E:\\LargeExcelExport.zip"));
2  LargeDataPageExcelExporter large = new LargeDataPageExcelExporter(ReportUtils.getPaperSettingListFromWorkBook(rworkbook), true);
3  //导出2007版outputStream = new FileOutputStream(new File("E:\\LargeExcelExport.xlsx")); excel LargeDataPageExcel2007Exporter large = new LargeDataPageExcel2007Exporter(ReportUtils.getPaperSettingListFromWorkBook(rworkbook), true);
4  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包传到客户端下载。

转载于:https://www.cnblogs.com/laoA188/p/5279417.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/288650.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

sql in 用法(mysql)

我们先看一个如下数据库表: 我们如果想查询这张表里面age为11和1的人该怎么办呢? 那么我们的 in 操作符就起作用了: SELECT * FROM table1 WHERE age1 IN(11,1); 查询来自表哥table1的数据,条件为age1 在(11,1)这两个数之中…

matlab的循环语句裁图,[MATLAB图像处理] 多幅图片处理的循环语句

多幅图片处理的循环语句 小弟毕业设计关于视频去雾处理,将视频截取为图片后对每张图片进行处理,其中需要用到循环语句来减少工作量,但自己对循环语句不怎么会,希望哪位大大能够给予帮助,谢谢了程序如下block_size 15;…

开源社·读书播客第一期:《大教堂与集市》

点击蓝字,关注我们|作者:许银|编辑:Corrie|设计:朱亿钦Hi,各位开源爱好者,在世界读书日这个特殊的日子里,我们开源社踩着潮流来了,近一年来&#…

LeetCode:Count Primes

Problem: Description: Count the number of prime numbers less than a non-negative number, n. Credits:Special thanks to mithmatt for adding this problem and creating all test cases. Solution:采用的为埃拉托斯特尼筛法 算法描述:(来自百度…

华为交换机查看端口流量_华为交换机限速及流量统计配置

配置交换机限速时,cir和cbs的关系是什么配置交换机限速时,cir和cbs的关系如下:cbs要大于报文的最大长度。在连续流量的情况下对于cbs没有特殊的要求,保证平均速率是cir的速率。在突发流量需要保证的情况下,如果cbs换算…

利用Matlab拟合时序植被生长季曲线,并求解物候参数

研究表明,一元六次曲线比一元二次曲线更好地模拟植被生长季的整个生长周期,表征植被的生长特性。matlab软件功能强大,在遥感模型研究方面有很大的优势特点,对数学模型模拟轻而易举,也可直接对栅格数据进行运算。因此本文采用matlab软件,采用一元6次曲线来拟合植被生长季曲…

sql between...and 用法(mysql)

首先我们看如下数据库表: 如果我们想查询如上表中的age1的值在0到5的数据该如何查询? 那么在这里我们用到我们的sql操作符between…adn。 SELECT * FROM table1 WHERE age1 BETWEEN 0 AND 5 其中between后面的0 and 5 意思就是 查询寻数据&#xf…

轻松搞定各版本IE兼容问题,IE6,IE7,IE8,IE9,IE10,IE11

轻松搞定各版本IE兼容问题,IE6,IE7,IE8,IE9,IE10,IE11 在网站开发中不免因为各种兼容问题苦恼,针对兼容问题,其实IE给出了解决方案,Google也给出了解决方案,百度也应用了这种方案去解决IE的兼容问题。解决这种兼容问题只需要一行代码就可以了&#xff0c…

linux shell之通过标识测试文件系统属性

1 通过标识测试文件系统属性 [ -f $file_var ] :如果给定的变量包含正常的文件路径或文件名,则返回真。 [ -x $var ] :如果给定的变量包含的文件可执行,则返回真。 [ -d $var ] :如果给定的变量包含的是目录,则返回真。 [ -e $var ] :如果给定的变量包含的文件存在,则返回真。…

python中变量类型在程序中可以改变_详细解析Python当中的数据类型和变量

数据类型计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值。但是,计算机能处理的远不止数值,还可以处理文本、图形、音频、视频、网页等各种各样的数据,不同的数据,需要…

php输出二维数组中指定内容,HP将MYSQL内容读到二维数组并按指定列输出

<?$host "localhost"; //主机名$user "root"; //mysql用户名$password ""; //mysql密码$database "doc"; //mysql数据库名$tables "mclass"; //表名$connmysql_connect("$host",&…

利用Excel VBA批量计算长时间序列植被物候动态阈值(逐像元)

本文演示利用Excel VBA编程实现多期栅格数据,逐像元计算物候参数:生长季始期(SOS)、生长季末期(EOS)和生长季长度(LOS),计算过程速度快! 说明: (1)利用Raster to Point工具将栅格数据转换为点图层,结果为38998个点,由于每年有24个数据(半月合成),所以得到的…

linux shell之字符串的比较

1 字符串常用的比较 字符串相等 [[ $str1 $str2 ]] 字符串不相等 [[ $str1 ! $str2 ]] 字符串大小比较 [[ $str1 > $str2 ]] 字符串等于空 [[ -z $str2 ]] 字符串不等于空 [[ -n $str2 ]] 用test代替[] if test $str1 $str2 2 测试代码 #/bin/bashstr1&quo…

如何在JavaScript中运行.NET Core代码

前言在.NET Core中运行JavaScript代码,目前已经有很多实现方案。但是,如果你希望在纯JavaScript环境中运行.NET Core代码呢?那么,DotNetJS可能对你有所帮助。DotNetJSDotNetJS可以将C#项目编译为与任何环境兼容的单文件JavaScript…

表联接

表1:teacher------------| id | name |------------| 1 | 刘德华 || 2 | 张学友 || 4 | 黎明 |------------表2:student------------------| id | name | tea_id |------------------| 1 | 张三 | 1 || 2 | 李四 | 1 || 3 | 王五 | …

sql 之as(Aliases)别名(mysql)

使用别名主要原因是因为如果在很多表的时候,我们的表名可能会混淆,导致语句不清晰,那么我们使用别名就可以让我们操作数据库表的时候更加清晰明了,那么我们假设有如下表: 那么我们查找我们age1的值为11的数据&#…

C语言发展史(The development of the C language)-BCPL、B与C【转】

The Development of the C Language*Dennis M. RitchieBell Labs/Lucent TechnologiesMurray Hill, NJ 07974 USA 概要在1970s早期,C编程语言是作为新生的Unix操作系统的系统实现语言而设计的。衍生于无类型(typeless)语言BCPL,它进化出了一个类型结构【…

linux shell之find高级点的用法

1 查找当前目录a.txt和b.txt文件,下面的o是or的意思, -iname是忽略大小写的意思(-o -iname) find . -iname a.txt -o -iname b.txt 2 查找当前目录下的除了a.txt的文件(!) find . ! -iname "a.txt" 3 查看当前目前下的目录(-type d) find . -type d 4 查看当前目…

Java Eclipse开发环境搭建及注意事项

一、所需工具 (1)JDK(http://www.oracle.com/technetwork/java/javase/downloads/index.html) (2)Tomcat 7.0(http://tomcat.apache.org/download-70.cgi,选择: 32-bit/64-bit Windows Service Installer (pgp,

基于.NetCore开发博客项目 StarBlog - (3) 模型设计

系列文章基于.NetCore开发博客项目 StarBlog - (1) 为什么需要自己写一个博客?基于.NetCore开发博客项目 StarBlog - (2) 环境准备和创建项目基于.NetCore开发博客项目 StarBlog - (3) 模型设计...基于.NetCore开发博客项目 StarBlog - 接口返回值包装基于.NetCore开…