最近有个客户需要报表实现动态列,我选择的报表工具是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文件,从而实现动态表头
分享到:
相关推荐
IReport 动态列详解 IReport 是一个功能强大的报表设计工具,具有灵活的报表设计和数据分析能力。其中,动态列是 IReport 的一个重要功能,允许用户根据需要动态生成报表列。本文将详细介绍如何使用 IReport 制作...
本文将深入探讨如何在ireport中实现"固定表头"、"隐藏列"以及"列的固定"这三个功能,以便更好地理解和应用在jasperreports-5.6.0版本上。 首先,**固定表头**是在滚动报表内容时保持表头始终可见的功能。这对于大型...
在使用iReport设计报表时,有时会遇到一个问题,即如何处理相同列的合并。这个问题在传统的表格布局中可能不那么突出,但在复杂报表设计中,尤其是数据分组时,重复列的合并显得尤为重要,因为它可以有效地节省空间...
实现了jasperReport进行报表动态列的实现,使用者只需要利用eclipse将工程文件导入,即可查看运行结果的展示,不需要其他的配置和jar包如果想进行动态展示只需要修改构造参数就可以看到动态的展示
本文将详细解释如何在IREPORT中实现这种多行某列数据的合并。 首先,遇到的问题是使用常规的属性设置进行合并后,可能会出现边框不完整的情况。为了解决这个问题,我们需要手动添加线条来补充缺失的边框。但是,这...
在这个特定的案例中,我们关注的是如何在JasperReport和iReport中实现固定表头以及隐藏和显示列的功能。 首先,让我们了解一下JasperReport。JasperReport是一个开源的报表库,它允许开发者在各种应用程序中生成...
在IReport中实现这样的报表,我们需要进行以下步骤: 1. **设计主报告**: - 打开IReport,新建一个报表项目。 - 设计主报告的布局,包括表格、文本框等组件,这些组件将用于展示主数据集的信息。 - 在主报告中...
在iReport设计工具中,可以利用Crosstab控件的特性来实现自定义排序。具体操作如下: 1. **选择排序依据**:在Crosstab控件的设置中,选择需要排序的字段(例如`$V{belong_name}`)。 2. **修改字段表达式**:为了...
这一步骤允许我们将用户输入的查询条件与SQL查询语句关联起来,从而实现动态数据筛选。 接着,我们来谈谈数据集(Dataset)。数据集是iReport中用于存储和处理数据的容器,它可以从数据库、XML文件或任何其他数据源...
Java iReport是一款强大的报表设计工具,它允许开发者创建复杂的报表并集成到Java应用程序中。iReport的主要功能是设计JRXML文件,这是一种XML格式,...理解和掌握这些步骤对于在Java应用中实现动态报表生成至关重要。
本篇将深入探讨如何利用IReport来实现子报表以及行合并的实例。 首先,IReport是一款基于GUI的报表设计工具,它允许用户通过拖拽方式设计报表模板,然后将其编译成JasperReport可以理解的JRXML文件。JasperReport则...
4. **分页设置**:在 iReport 中可以通过设置 `pageHeight` 和 `pageWidth` 来控制每一页的高度和宽度,从而实现分页显示。 5. **脚注**:通常用来显示页码、日期等信息。 ### 使用 Java 实现 HTML 分页显示 在 ...
在IReport中,你可以自定义字体、颜色、边框等样式属性,以实现个性化报表设计。字体包括字体类型、大小、颜色以及是否加粗、斜体等。样式可以通过样式表(CSS)进行全局管理,实现样式复用和统一。 **iReport字段...
IReport是一款强大的报表设计工具,它是JasperReports项目的一部分,主要用于设计PDF、HTML、XLS、CSV等多种格式...通过理解并实践这个示例,开发者可以更好地掌握IReport的使用,从而在实际项目中高效地实现报表功能。
iReport允许用户自定义样式表(CSS),以实现个性化的样式效果。同时,还可以通过子报表和分组来组织复杂的报表结构。 最后,导出和发布是报表的最终阶段。iReport支持多种导出格式,如PDF、Excel、HTML等,满足...
4. **报表设计基础**:手册会教授基本的报表设计概念,如行、列、单元格、段落和样式,以及如何使用控件和组件来构建报表结构。 5. **数据源管理**:iReport支持多种数据源,如数据库连接(JDBC)、XML、CSV等。...
- **嵌入到应用**:生成的报表可以嵌入到Java应用程序、Web应用或服务器端,实现动态数据的展现。 总的来说,iReport 3.1.0是Java开发者构建报表的重要工具,与JasperReports库相结合,提供了强大的报表设计和开发...
同时,iReport的报表可以嵌入到Java应用中,实现动态生成和展示报表的功能。 7. **优化与调试** 在设计过程中,可能会遇到格式问题或者数据不正确的情况,此时需要检查数据源、SQL查询、样式设置等,逐步调试优化...
在iReport中,要导出包含Excel公式的报表,我们需要利用“脚本域”(Scriptlet)或“表达式”(Expression)来实现。以求和公式为例,我们可能需要计算某一列或行的总和。以下是一步步的操作步骤: 1. **创建脚本域**:...