`
achui_1980
  • 浏览: 18539 次
  • 来自: ...
社区版块
存档分类
最新评论

IReport动态列的实现

阅读更多

最近有个客户需要报表实现动态列,我选择的报表工具是Ireport,经过一些资料的研究,基本上实现了动态列,下面是我写的测试代码,还有些需要完善,跟大家分享一下:

写道
public class RptDesign4SD {

public static JasperDesign getJasperDesign(String file)
{
JasperDesign design = null;
try {
design = JRXmlLoader.load(file);
//JRField[] fieldList = design.getFields();
JRElement[] elementList = design.getColumnHeader().getElements();
List<JRElement> arr = new ArrayList<JRElement>();
//不显示密码列
//int index = 0;
for(JRElement element : elementList)
{
String key = element.getKey();
System.out.println(key);
if("static_pwd".equals(key) || "staticText-static".equals(key))
{
continue;
}
arr.add(element);
}
JRDesignBand band = new JRDesignBand();
band.setHeight(30);
int currentX = 0;
for(JRElement element : arr)
{
element.setX(currentX);
currentX += element.getWidth();
band.addElement((JRDesignStaticText)element);
}
design.setColumnHeader(band);

band = new JRDesignBand();
band.setHeight(18);
JRElement[] elementDetailList = design.getDetail().getElements();

arr = new ArrayList<JRElement>();
currentX = 0;
for(JRElement field : elementDetailList)
{
String key = field.getKey();
if("textField_pwd".equals(key) || "textField_status".equals(key))
{
continue;
}
arr.add(field);
}
for(JRElement element : arr)
{
element.setX(currentX);
currentX += element.getWidth();
band.addElement((JRDesignTextField)element);
}
design.setDetail(band);
} catch (JRException e) {

e.printStackTrace();
}
return design;
}

public static void main(String[] args)
{
JasperDesign design = RptDesign4SD.getJasperDesign("E:\\testAutoColumn.jrxml");
try {
//JasperCompileManager.compileReportToFile(design, "E:\\achui.jrxml");
net.sf.jasperreports.engine.xml.JRXmlWriter.writeReport((JRReport)design, "E:\\achui.jrxml", "UTF-8");
} catch (JRException e) {

e.printStackTrace();
}
}

 主要思路是:做好的模版(这个模版包含了所有列)读取出来,然后动态的修改相应区域的表头信息,把需要显示的表头去掉,在将后面的表头迁移,最后再重新生成jrxml文件,从而实现动态表头

 

分享到:
评论
5 楼 十字街头 2013-03-29  
LZ你的这个类真是个神类啊·····················
4 楼 lijuer 2013-03-26  
同二楼朋友遇到的问题,我测试获取columnHeader和detail板块都获得不了数据,测试输出的都是null。
朋友,如果可以发一个完整的例子,谢谢了,415921540@qq.com
3 楼 JsonTeye 2012-04-26  
我刚学jasperreport,对你的代码不是很懂,能不能发份完整的代码给小弟,1051834224@qq.com
2 楼 levin_china 2010-10-08  
为什么我的System.out.println(key); 永远输出null呢?
1 楼 jn981 2010-04-01  
完整的代码能给我一份吗,发到50230823@qq.com谢谢

相关推荐

    IReport动态列

    IReport 动态列详解 IReport 是一个功能强大的报表设计工具,具有灵活的报表设计和数据分析能力。其中,动态列是 IReport 的一个重要功能,允许用户根据需要动态生成报表列。本文将详细介绍如何使用 IReport 制作...

    ireport固定表头隐藏列

    本文将深入探讨如何在ireport中实现"固定表头"、"隐藏列"以及"列的固定"这三个功能,以便更好地理解和应用在jasperreports-5.6.0版本上。 首先,**固定表头**是在滚动报表内容时保持表头始终可见的功能。这对于大型...

    用子表的方式解决ireport相同列合并问题

    在使用iReport设计报表时,有时会遇到一个问题,即如何处理相同列的合并。这个问题在传统的表格布局中可能不那么突出,但在复杂报表设计中,尤其是数据分组时,重复列的合并显得尤为重要,因为它可以有效地节省空间...

    jasperReport动态列的实现

    实现了jasperReport进行报表动态列的实现,使用者只需要利用eclipse将工程文件导入,即可查看运行结果的展示,不需要其他的配置和jar包如果想进行动态展示只需要修改构造参数就可以看到动态的展示

    IREPORT中多行某列数据的合并

    本文将详细解释如何在IREPORT中实现这种多行某列数据的合并。 首先,遇到的问题是使用常规的属性设置进行合并后,可能会出现边框不完整的情况。为了解决这个问题,我们需要手动添加线条来补充缺失的边框。但是,这...

    JasperReport、ireport固定表头隐藏列

    在这个特定的案例中,我们关注的是如何在JasperReport和iReport中实现固定表头以及隐藏和显示列的功能。 首先,让我们了解一下JasperReport。JasperReport是一个开源的报表库,它允许开发者在各种应用程序中生成...

    ireport简单主子报表

    在IReport中实现这样的报表,我们需要进行以下步骤: 1. **设计主报告**: - 打开IReport,新建一个报表项目。 - 设计主报告的布局,包括表格、文本框等组件,这些组件将用于展示主数据集的信息。 - 在主报告中...

    ireport交叉报表自定义排序

    在iReport设计工具中,可以利用Crosstab控件的特性来实现自定义排序。具体操作如下: 1. **选择排序依据**:在Crosstab控件的设置中,选择需要排序的字段(例如`$V{belong_name}`)。 2. **修改字段表达式**:为了...

    ireport使用 参数Parameter的用法和dataset的用法 table的用法

    这一步骤允许我们将用户输入的查询条件与SQL查询语句关联起来,从而实现动态数据筛选。 接着,我们来谈谈数据集(Dataset)。数据集是iReport中用于存储和处理数据的容器,它可以从数据库、XML文件或任何其他数据源...

    java ireport jar包部署,引用,与ireport文件调用

    Java iReport是一款强大的报表设计工具,它允许开发者创建复杂的报表并集成到Java应用程序中。iReport的主要功能是设计JRXML文件,这是一种XML格式,...理解和掌握这些步骤对于在Java应用中实现动态报表生成至关重要。

    ireport 子报表,行合并实例

    本篇将深入探讨如何利用IReport来实现子报表以及行合并的实例。 首先,IReport是一款基于GUI的报表设计工具,它允许用户通过拖拽方式设计报表模板,然后将其编译成JasperReport可以理解的JRXML文件。JasperReport则...

    ireport在html分页显示

    4. **分页设置**:在 iReport 中可以通过设置 `pageHeight` 和 `pageWidth` 来控制每一页的高度和宽度,从而实现分页显示。 5. **脚注**:通常用来显示页码、日期等信息。 ### 使用 Java 实现 HTML 分页显示 在 ...

    IReport中文文档说明

    在IReport中,你可以自定义字体、颜色、边框等样式属性,以实现个性化报表设计。字体包括字体类型、大小、颜色以及是否加粗、斜体等。样式可以通过样式表(CSS)进行全局管理,实现样式复用和统一。 **iReport字段...

    ireport 的一个demo

    IReport是一款强大的报表设计工具,它是JasperReports项目的一部分,主要用于设计PDF、HTML、XLS、CSV等多种格式...通过理解并实践这个示例,开发者可以更好地掌握IReport的使用,从而在实际项目中高效地实现报表功能。

    iReport报表开发指南

    iReport允许用户自定义样式表(CSS),以实现个性化的样式效果。同时,还可以通过子报表和分组来组织复杂的报表结构。 最后,导出和发布是报表的最终阶段。iReport支持多种导出格式,如PDF、Excel、HTML等,满足...

    iReport1.2.1 用户手册

    4. **报表设计基础**:手册会教授基本的报表设计概念,如行、列、单元格、段落和样式,以及如何使用控件和组件来构建报表结构。 5. **数据源管理**:iReport支持多种数据源,如数据库连接(JDBC)、XML、CSV等。...

    iReport-nb-3.1.0

    - **嵌入到应用**:生成的报表可以嵌入到Java应用程序、Web应用或服务器端,实现动态数据的展现。 总的来说,iReport 3.1.0是Java开发者构建报表的重要工具,与JasperReports库相结合,提供了强大的报表设计和开发...

    iReport 绘制报表步骤

    同时,iReport的报表可以嵌入到Java应用中,实现动态生成和展示报表的功能。 7. **优化与调试** 在设计过程中,可能会遇到格式问题或者数据不正确的情况,此时需要检查数据源、SQL查询、样式设置等,逐步调试优化...

    iReport导出Excel公式

    在iReport中,要导出包含Excel公式的报表,我们需要利用“脚本域”(Scriptlet)或“表达式”(Expression)来实现。以求和公式为例,我们可能需要计算某一列或行的总和。以下是一步步的操作步骤: 1. **创建脚本域**:...

Global site tag (gtag.js) - Google Analytics