水平拉伸CrossTab的单元格

时间:2011-04-05 18:36:36

标签: jasper-reports crosstab

如何在[CrossTab小部件]中获取值单元格以水平拉伸而不是垂直拉伸?溢出时拉伸可垂直拉伸单元,而不是水平拉伸单元。

1 个答案:

答案 0 :(得分:3)

背景

如果我没记错的话,JasperReports中的单元格既没有设计也没有实现水平拉伸。这是主要开发者做出的有意识的决定。

您可以通过根据数据的宽度生成交叉表单元格来拉伸它们(单独使用该句子可以让您了解为此问题创建通用解决方案的范围)。这是可能的,但需要使用JasperReports API创建自己的类。

想象一下,您有100,000行数据,并希望单元格自动适应最长的字符串。 JasperReports必须做以下两件事之一:

  1. 在运行最终SQL语句之前,通常会修改开发人员的SQL语句以查询每个相应列中的最长字符串。这有效地运行了两次查询。如果查询使用volatile函数调用,则可能发生各种问题。
  2. 查询所有行,然后确定最长的字符串。对于10,000个记录以下的查询,这不是问题。扩展到100,000行会带来很大的性能损失,并会占用大量的RAM。
  3. 然后你必须回答有关空白区域的问题:修剪或不修剪?如果报告软件修剪它,则返回的数据不是数据库中信息的真实表示。如果没有修剪数据,则会出现更多问题(例如看起来“空”的意外超长列)。或者你可以让开发人员再做一件事。

    这不是一个小问题。

    替代

    尝试DynamicJasper