3

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

4

1 回答 1

3

背景

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

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

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

  1. 在运行最终的 SQL 语句之前,一般修改开发人员的 SQL 语句以查询每个对应列中最长的字符串。这有效地运行了两次查询。如果查询使用 volatile 函数调用,则可能会发生各种问题。
  2. 查询所有行,然后确定最长的字符串。对于 10,000 条记录以下的查询,这不是问题。扩展到 100,000 行会带来很大的性能损失,并且会占用相当大的 RAM。

然后你必须回答关于空白的问题:修剪还是不修剪?如果报告软件对其进行了修整,那么返回的数据就不是数据库中信息的真实表示。如果数据没有被修剪,那么这会引发更多问题(例如看起来“空”的意外超长列)。或者你可以让它成为开发人员需要做的另一件事。

这不是一个小问题。

备择方案

试试DynamicJasper

于 2011-04-06T03:09:54.987 回答