0

我正在使用 iReport 4.7.1。这是一份包含大量信息(402 个参数)的报告。(不是字段,而是参数)。
我正在使用页眉的波段 1284 和摘要的波段 1409。页面格式为 8,264 x 20,125。报告,打印不正确。细节带,工作正常,但摘要部分是一团糟。摘要带的代码是:

<summary>
    <band height="600" splitType="Stretch">

详细代码是:

<detail>
    <band height="1409" splitType="Inmediate">

当我使用其他细节带(detail2)打印时是一团糟代码是:

<detail2>
    <band height="1409" splitType="Stretch">

我试图改变页面格式。默认情况下为 8,264 x 20,125 英寸,当我更改为 A4 时。尺寸相同,没有更好的尺寸。默认页面非常窄。两份报告而不是一份报告是否合理?我可以更改表带的大小并为我的所有物品腾出空间吗?

4

2 回答 2

1

首先你说8,264 x 20,125 inches我认为这是不正确的。我认为 Jasper Reports 使用像素而不是英寸。其次,从指定的尺寸和英寸导出为 PDF 时会进行转换。例如,对于常规的 8.5" x 11" 字母,Jasper Reports 中的相应大小应为 612 X 792。

那是什么意思?

好吧,这意味着现实世界中的每一英寸都等于72Jasper Reports 世界中的每一英寸。因此,您在 Jasper Reports 中的 8,264 x 20,125 尺寸为 114.8" x 279.5",为了提供更多视角,大约为 9.5 英尺乘以 23 英尺多一点。那是相当该死的大!

所以你会怎么做?

Jasper Reports 中的 A4 是 542 x 842。因此,您需要通过使用较小的字体、文本换行来缩小报告的实际大小,但在这种情况下,我认为这还不够。

设计报告可以被视为一门艺术(坚持下去,我有一点承诺)。它有必须实现的特定目标,否则就是失败:

  • 需要包含有用的必要信息。这可能很棘手,如果报告中没有足够的数据,它将没有用处。有太多,没有人能理解它。这是一个必须达到的平衡。
  • 需要令人欣喜若狂的赏心悦目。这并不意味着漂亮的图片。这意味着它需要自然流动。如果事情没有对齐,或者没有相应地分组,读者将无法处理报告。
  • 布局中需要考虑交付格式。以 PDF 格式交付的报告与以电子表格形式交付的报告之间存在巨大差异。使用电子表格,您可以容纳更多信息,因为用户可以通过隐藏它们轻松配对他们想要的列。
  • 报告要打印吗?如果要打印,您确实需要坚持标准页面尺寸,或者至少知道它将打印在什么页面尺寸上。这会限制你,因为你不能把字体做得小到需要放大镜才能阅读。

我相信还有其他人,但这是我个人在做报告时牢记在心的。

就您而言,有这么多数据,我认为您有两种选择:

  1. 只允许导出到 Excel 并让用户决定他们想要什么。缺点是如果他们正在打印它,它看起来不会像从 Excel 打印出来的那么好。
  2. 将报告拆分为不同的报告,以满足报告用于的每项任务的特定需求。这样做的缺点是工作量更大。它要求您首先弄清楚该报告的实际用途和用途。然后用户实际需要哪些信息才能使用它来做出决策。

就我个人而言,我会选择选项 2。一份包含大量数据的报告几乎毫无用处。用户如何从包含如此多数据的报告中得出任何结论?尽可能保持简单、干净、切中要害,这将是一份更有效的报告。

于 2012-11-01T19:06:10.747 回答
0

谢谢你。我将报告分成两个小报告。我尝试创建其他细节乐队。我把细节 1185 像素和细节 2600 像素。两者都带有溢出类型中间体。报告更好,但某些参数无序 可能是某些属性不好?将信息放在字段而不是参数中是否合理?参数是哈希映射。Java 代码

 parameter.put("i_4_motivo_vol",     arrayTodosIndicadores[327]);

jrxml代码

<parameter name="i_4_motivo_vol" class="java.lang.String"/>
<textField>
<reportElement uuid="5e27ddd1-747f-474c-82af-ac3cfcf8eee6" mode="Transparent" x="450"  y="116" width="41" height="20">
                <printWhenExpression><![CDATA[Boolean.valueOf($P{tamMuestral_4}.intValue() >= $P{muestra2}.intValue())]]></printWhenExpression>
            </reportElement>
            <textElement/>
            <textFieldExpression><![CDATA[$P{i_4_motivo_vol}]]></textFieldExpression>
        </textField>
于 2012-11-05T11:13:57.217 回答