如何将分隔的字符串转换为表格布局?

2023-12-12

我有一个包含值的字段:

CM45024,CM45025,CM45026

我想使用子报告将其分成多个项目。我的 jrxml 来源是:

<field name="docIdNoGRN" class="java.lang.String">
    <fieldDescription><![CDATA[docIdNoGRN]]></fieldDescription>
</field>

<textField isStretchWithOverflow="true" isBlankWhenNull="true">
    <reportElement key="textField-53" x="311" y="1" width="88" height="15" uuid="2e040fd0-8fae-46e8-a845-fba421922992"/>
    <textElement textAlignment="Center">
    <font size="10"/>
    </textElement>
    <textFieldExpression><![CDATA[($F{docIdNoGRN} != null && $F{docIdNoGRN}.toString().length() > 0) ? $F{docIdNoGRN} : " "]]>  
    </textFieldExpression>
</textField>

该字段可以包含 3 个或更多项目,具体取决于数据。而不是在报告中包含一项:

Item No.    Item ID.
   1        CM45024,CM45025,CM45026

我想这样展示:

Item No.    Item ID.
   1        CM45024
   2        CM45025
   3        CM45026

我正在使用 TIBCO Jaspersoft® Studio Professional - JasperReport 6.1.1 的可视化设计器。


这就是使用子报表实现的方法,假设您的$F{docIdNoGRN}包含字符串“CM45024、CM45025、CM45026”

  1. 生成将传递给子报表的数据源

    <subreport>
     <reportElement x="163" y="15" width="200" height="100" uuid="9d6660e0-094e-4df3-9acb-74c031350b10"/>
     <dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource(java.util.Arrays.asList($F{docIdNoGRN}.split(",")))]]></dataSourceExpression>
     <subreportExpression><![CDATA[$P{SUBREPORT_DIR} + "your_subreport.jasper"]]></subreportExpression>
    </subreport>
    

正如你所看到的,我split(",")你的领域String得到一个Array转换为List然后传入一个JRBeanCollectionDataSource

  1. 设置子报表,引用我们的字符串的技巧是使用_THIS作为字段值

例子: (your_subreport.jrxml):

<?xml version="1.0" encoding="UTF-8"?>
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="jTest_subreport2" language="groovy" pageWidth="555" pageHeight="802" columnWidth="555" leftMargin="0" rightMargin="0" topMargin="0" bottomMargin="0" uuid="23d7765f-250f-4632-94c6-bbd218db3d11">
    <field name="_THIS" class="java.lang.String"/>
    <detail>
        <band height="35" splitType="Stretch">
            <textField>
                <reportElement x="0" y="0" width="100" height="20" uuid="716bb440-2692-4c58-a1b7-972aff240c67"/>
                <textFieldExpression><![CDATA[$V{REPORT_COUNT}]]></textFieldExpression>
            </textField>
            <textField>
                <reportElement x="100" y="0" width="100" height="20" uuid="e5464783-d74a-4405-9997-ddb1531c6e42"/>
                <textFieldExpression><![CDATA[$F{_THIS}]]></textFieldExpression>
            </textField>
        </band>
    </detail>
</jasperReport>

我已经添加了$V{REPORT_COUNT}达到数字 (1,2,3) 。

输出将是

1 CM45024
2 CM45025
3CM45026

注意:如果您想避免生成子报表,您也可以使用 jr:table 组件来实现此目的(只需如上定义表数据源)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将分隔的字符串转换为表格布局? 的相关文章

随机推荐

  • 为什么 == 有时对 Java 中的字符串起作用? [复制]

    这个问题在这里已经有答案了 我有以下代码 Circle c1 new Circle Circle c2 new Circle System out println c1 c2 哪个输出False 正如预期的那样 这是因为c1 and c2是
  • Linux 在同一个 CSV 文件中将一列拆分为两个不同的列

    Closed 这个问题是无关 目前不接受答案 您好 我有一个包含以下条目的 csv 文件 11 22 13 aa bb cc ww kk ll 请建议我一个 Linux 命令或脚本 它可以在同一文件中将列分成 3 列 如下所示 11 aa
  • C# P\Invoke DLL 没有 C++ 的入口点?

    我有一个 C Dll TheFoo dll 其方法为 Foo 我只需调用以下命令即可访问使用此方法的其他 C 代码 Foo 我相信该方法确实具有 declspec dllexport 因此 根据我对 P Invoke 的阅读 我认为我应该能
  • PHP 替代控制结构有什么缺点吗?

    我一直在与PHP无需任何模板即可生成 HTML 的代码 而且其结构非常混乱且难以阅读 大幅改进我注意到的流程的一种方法是使用 endif代替 在某些情况下会阻塞以提高可读性 看http php net manual en control s
  • 适用于 Android 的 libjpeg-turbo

    I need libjpeg turbo对于安卓NDK 有人设法将其编译为 a 静态 lib 吗 我已经尝试了几次 但它只给了我很多错误 安装Android NDK 以下说明经过验证r8b 老版本可能有问题 我不知道 获取 Android
  • 如何在linux上运行aout?

    问题是如何在 Linux 系统上执行 aout format 二进制文件 我的意思是旧格式 例如在迁移到 ELF 之前在 FreeBSD 上使用的格式 是否有可能在没有额外编码的情况下做到这一点 是否有一些现有的解决方案 也许它应该是 Li
  • Laravel 8 - 外键约束的形成不正确

    我不知道出了什么问题 因为我对此很陌生 Product Model class Product extends Model use HasFactory public function store return this gt belong
  • Heroku —“很抱歉,出了点问题”

    嗨 我对 Heroku 还很陌生 我已经完成了我的应用程序的一部分 目前我在本地工作 但我想部署到 Heroku 当我打字时heroku logs我懂了 2012 07 30T16 36 27 00 00 app web 1 DEPRECA
  • 在 Firebase 中创建用户时出现错误

    所以我正在关注精明的应用程序教程以学习 Vue js 本教程使用 Firebase 和 Firestore 由于 Firestore 处于 Beta 阶段 正如教程所述 因此可能会发生变化 我认为这里可能就是这种情况 无论如何 我正在尝试注
  • 在 Sweave 中制作扁平化 pdf

    因此 我正在使用 Sweave 创建 pdf 其中包含一些带有大量点的图表 我可以很好地获取 pdf 但它似乎用大量图层创建了它 因此很难在 Acrobat 或 Reader 中打开该文件 当我这样做时 我确实可以看到文档上加载的点 有没有
  • Postgres 是否提供刷新缓冲区缓存的命令?

    你好 有时我需要做一些 SQL 调优任务 我通常在我的测试数据库上做这样的测试 当我执行一条sql语句后 我想刷新包含SQL的缓冲区缓存 语句和sql结果 就像Oracle中的命令 Alter system flash buffer cac
  • 如何添加和删除CSS类

    如何删除CSS默认类 这是我的div div 这是我的 css 类 messageContainer height 26px color FFFFFF BACKGROUND COLOR 6af VERTICAL ALIGN middle T
  • 身份管理/SSO 解决方案? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 您对基本的集中式身份管理 SSO 服务有何建议 它必须是开源的 具有可插入的身份管理器 例如 LDAP DB openID 等 并提供一系列适当的
  • 生成新的 Nestjs 模块会导致错误:无法执行命令

    我使用带有 M1 芯片的 MacOS monterey 作为操作系统 使用以下命令安装 NestJS cli sudo npm install g nestjs cli 使用创建新的 Nest 项目时nest new message一切正常
  • 使用 XSLT 合并相邻的兄弟节点

    我有一个问题让我头疼极了 请帮我 输入是 p class section section 1 p p class code some code p p class code following code p p class code fol
  • 如何在Javascript中深度复制(克隆)具有数组成员的对象?

    介绍 我有一个班级Persons包含一个数组Person和功能 function Persons this mItems Array of Objects Person Persons prototype calculateScores f
  • JavaScript 中未声明变量的用法

    如果我们尝试使用未声明但允许为其设置值的变量 为什么 JavaScript 会抛出引用错误 e g a 10 creates global variable a and sets value to 10 even though its un
  • 使用 Maven 运行多个类

    我有一个包含多个类的包 每个类都封装了一个可执行程序 即带有 main 方法 即 com myorg examples classA com myorg examples classB etc 所有类都属于同一个包 com myorg ex
  • 为什么通过泛型类型映射闭集不允许解析重复?

    In 这段 TypeScript 代码 也在下面重复 有一个映射类型 type DRYObjectModelMap PlanetaryBodyClass in keyof FieldNameWithValueMap ObjectModel
  • 如何将分隔的字符串转换为表格布局?

    我有一个包含值的字段 CM45024 CM45025 CM45026 我想使用子报告将其分成多个项目 我的 jrxml 来源是