水平拉伸 CrossTab 的单元格

发布于 2024-10-30 17:47:17 字数 66 浏览 0 评论 0原文

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

How would I get a value cell [in a CrossTab widget] to stretch horizontally, rather than vertically? Stretch on overflow stretches the cell vertically, rather than horizontally.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

囍孤女 2024-11-06 17:47:17

背景

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

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

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

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

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

这不是一个小问题。

替代方案

尝试DynamicJasper

Background

If I recall correctly, cells in JasperReports were neither designed nor implemented to stretch horizontally. This was a conscious decision made by the lead developers.

You can make them stretch by generating the cross-tab cells according to the width of the data (that sentence alone should give you a feel for the scope of creating a generic solution to this problem). It is possible, but would involve creating your own class using the JasperReports API.

Imagine you have 100,000 rows of data and want the cell to auto-fit to the longest string. JasperReports would have to do one of two things:

  1. Generically modify the developer's SQL statement to query the longest string in each of the corresponding columns before running the final SQL statement. This effectively runs the query twice. If the query uses a volatile function call, then all sorts of problems can happen.
  2. Query all the rows and then determine the longest string. For queries under 10,000 records, this is not a problem. Scaling up to 100,000 rows imparts a large performance hit, and would eat a fair chunk of RAM.

Then you have to answer questions about white space: trim or not to trim? If the reporting software trims it, then the data coming back isn't a true representation of the information in the database. If the data isn't trimmed, then that cascades to more problems (such as unexpectedly super-long columns that look "empty"). Or you can make it one more thing that the developer needs to do.

It is not a trivial problem.

Alternatives

Try DynamicJasper.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文