以前在新浪博客上发表过一篇<jasperreport实现excel的冻结窗口>的思路。由于当时的客户后来不再要求实现该功能,后来就没再多思考。今天偶登录新浪博客,发现有人要例子源码,于是就总结实现了下。
先说下原理,jasperreport是没有实现冻结窗口功能的,但其底层用的是POI框架,也就是jasperreport是对poi的一个封装。POI是实现了对窗口冻结功能的,所以我们的思路就是通过对jasperreport的一些修改从而实现该功能。
POI的冻结窗口API(http://poi.apache.org/apidocs/org/apache/poi/ss/usermodel/Sheet.html):
createFreezePane
(int colSplit,
int rowSplit)
Creates a split (freezepane).
其使用的例子,在百度文库中有(http://wenku.baidu.com/view/bcc25d0cba1aa8114431d91d.html),这里不再赘述。
通过查找jasperreport的源码,发现在net.sf.jasperreports.engine.export.JRXlsExporter类中createReport方法有对Sheet继承类HSSFSheet的操作,可以通过调用该类的createFreezePane(int colSplit,
int rowSplit)方法来实现冻结窗口。
再查看我们写的导出excel方法(具体代码网上很多,这里也不再粘贴),如下:
JRXlsExporter xlsExporter = new JRXlsExporter();
xlsExporter.setParameter( JRExporterParameter.JASPER_PRINT, jasperPrint );
xlsExporter.setParameter( JRExporterParameter.OUTPUT_FILE, new File("E:/Workspaces_BJ/workBJ/asf/src/test/report/location_xls4Report.xls") );
xlsExporter.exportReport();
通过调试发现,net.sf.jasperreports.engine.export.JRXlsExporter类的createReport方法在上述代码的xlsExporter.exportReport()后调用,所以我们需要给她加个方法,在exportReport()之前进行设置即可。
在尽量不修改源码的前提下,我们重写net.sf.jasperreports.engine.export.JRXlsExporter类的createReport方法,并增加一个设置冻结窗口的方法,如下
package test.report;
public class JRXlsExporter extends
net.sf.jasperreports.engine.export.JRXlsExporter {
private int colSplit; //冻结行
private int rowSplit; //冻结列
@Override
protected void createSheet(String name) {
super.createSheet(name);
if(colSplit != 0 && rowSplit!= 0)//在不设置的情况下不调用
sheet.createFreezePane(colSplit, rowSplit);
}
public void createFreezePane(int colSplit, int rowSplit) {
this.colSplit = colSplit;
this.rowSplit = rowSplit;
}
}
把以上原来导出excel的net.sf.jasperreports.engine.export.JRXlsExporter替换成我们重写后的test.report.JRXlsExporter,在new出实例后,如需设置冻结窗口,调用createFreezePane方法即可。所以最终代码如下:
JRXlsExporter xlsExporter = new JRXlsExporter();
xlsExporter.createFreezePane(1, 1);//设置冻结窗口
xlsExporter.setParameter( JRExporterParameter.JASPER_PRINT, jasperPrint );
xlsExporter.setParameter( JRExporterParameter.OUTPUT_FILE, new File("E:/Workspaces_BJ/workBJ/asf/src/test/report/location_xls4Report.xls") );
xlsExporter.exportReport();
这样即可实现了。
在此总结,希望对自己有所提高,对大家有所帮助。
分享到:
相关推荐
在本文中,我们将深入探讨如何使用JasperReport来实现动态表头,这是一个在报表生成过程中非常重要的特性,尤其是在处理如服装行业中需要灵活调整的尺码组数据时。JasperReport是一个开源的报表工具,具有良好的可...
总的来说,SpringBoot与JasperReport的整合使得报表生成变得简单,它提供了灵活的设计工具和丰富的数据绑定能力,可以帮助开发者快速地实现复杂报表的展示需求。通过学习和掌握这一技术,你可以提升企业应用的报表...
在本文中,我们将深入探讨如何使用JasperReport实现动态表头,特别是针对尺码组这样的特殊需求。 1. **JasperReport流程**: JasperReport的工作流程包括XML解析、设计对象构建和编译。首先,JRXML文件被`...
标题中的“jasperreport生成pdf实现下载与打印”是指使用JasperReports库来创建PDF报告,并提供下载和打印功能。JasperReports是一个开源的Java报表工具,它允许开发者设计、生成和导出各种类型的报表,包括PDF、...
JasperReport与iReport是两个在Java开发中常用的报表工具,它们结合使用能够帮助开发者实现复杂的报表设计和导出功能。JasperReport是一个开源的报表引擎,它可以生成PDF、HTML、XLS、CSV等多种格式的报表,而...
标题“使用JasperReport输出image图像”涉及到的关键技术点是JasperReport的图像生成和导出功能。在描述中提到的场景是,一个项目需要在文档中添加可识别的元素,比如条形码,然后将包含这些元素的文档作为图像保存...
Struts2、iReport与JasperReport是Java开发中用于构建高效、动态Web应用程序和报表生成的工具。在这个项目中,这些技术结合在一起,提供了一种强大的报表导出解决方案。以下是对这些关键技术及其在项目中的应用的...
在这个特定的案例中,我们关注的是如何在JasperReport和iReport中实现固定表头以及隐藏和显示列的功能。 首先,让我们了解一下JasperReport。JasperReport是一个开源的报表库,它允许开发者在各种应用程序中生成...
标题中的“ireport+jsp基于jasperReport 实现导出报表至web页面”是指使用iReport工具和JasperReport库,结合JavaServer Pages (JSP) 技术,来创建和展示动态报表,并能将这些报表导出到Web页面上供用户查看。...
Java 中jasperReport实现动态列打印的实现代码主要介绍了使用jasperReport实现动态列打印的相关知识点。下面将详细介绍相关知识点。 首先,jasperReport是一个流行的报表生成工具,它可以生成各种格式的报表,例如...
### Java Applet + JasperReport 实现Web端打印 #### 背景介绍 在Web开发领域,特别是企业级应用中,精确打印与批量打印是非常重要的功能之一。这不仅关乎用户体验,还涉及到业务流程的顺利执行。传统的Web打印...
在JasperReport中,我们可以使用“组”(Group)功能来实现动态表头。每个组都有自己的表头,当数据变化时,相应的表头会自动显示。例如,对于一个销售报表,可以按照地区、年份、季度等进行分组,每个级别的分组都...
实现了jasperReport进行报表动态列的实现,使用者只需要利用eclipse将工程文件导入,即可查看运行结果的展示,不需要其他的配置和jar包如果想进行动态展示只需要修改构造参数就可以看到动态的展示
4. **使用`group`**:jasperReport的分组功能也可以帮助实现动态合并。通过设置分组,可以在每个分组的开头和结尾自动插入新行,当数据在同一分组内时,可以利用`printWhenGroupChanges`属性来决定是否合并。 5. **...
**jasperReport 亚洲语言包** jasperReport是一款强大的开源报表工具,广泛应用于Java应用程序中,用于设计、创建和...在进行国际化开发时,理解并正确使用这些支持包,能够极大地提升jasperReport的功能和用户体验。
iReport&JasperReport配置使用.pdf指导了如何将ireport设计的模板与jasperreport API结合,实现报表的动态生成和交互。 1. 模板设计与编译:在iReport中设计报表模板后,通过jasperReport API编译成.jasper文件,...
在“JasperReport动态报表归并行数据”这个主题中,我们主要讨论如何利用JasperReport来处理和展示动态变化的数据,并实现数据的合并。 1. **动态报表设计**: JasperReport支持XML或Java代码定义报表模板(jrxml...
例如,可以使用`JasperFillManager.fillReport()`方法填充数据,然后用`JasperExportManager.exportReportToPdfStream()`导出为PDF。 4. 在WEB应用中,这些报表生成的逻辑通常封装在服务层,然后由控制器调用,最后...
- 使用jasperReport提供的API可以轻松实现报表的导出功能。 - 例如,为了导出PDF格式的报表,可以使用jasperExportManager.exportReportToPdfStream方法。 - 对于HTML和Excel格式的导出,也有相应的API可供调用。...