动态列单元格宽度

时间:2008-11-18 22:32:31

标签: java html jasper-reports

我有一些以HTML格式显示的Jasper报告。我希望HTML表格中列的宽度能够自动调整大小以适应最宽单元格(在该列中)的内容,以便显示所有数据。

目前这不会发生,因为Jasper生成的HTML指定了< table>的固定宽度。和一些< td>元素,例如。

<td style="width: 20px; height: 17px;">
  <span style="font-family: Arial; font-size: 11px;">foo-bar-baz@examp</span>
</td>

我不能简单地删除所有这些宽度属性(使用JavaScript),因为(如上面的HTML所示)使用这些宽度时隐藏的任​​何数据甚至不会返回到客户端

干杯, 唐

3 个答案:

答案 0 :(得分:5)

虽然不完美,但您可以将字段标记为溢出。这至少可以为您提供所有数据。在您的jrxml文件中,它类似于:

<textField isStretchWithOverflow="true" hyperlinkType="None">
    <reportElement style="Report Sub-Title" x="0" y="84" width="802" height="20"/>
    <textElement/>
    <textFieldExpression class="java.lang.String">
        <![CDATA["For the period ...]]>
    </textFieldExpression>
</textField>

我担心我不知道Jasper报告的任何功能允许动态调整列宽的大小 - 这可能是对HTML有意义的事情之一,但对其他输出格式(例如PDF)却没什么意义

答案 1 :(得分:3)

开发人员有意识地决定不允许细胞宽度伸展。对于根据内容更改宽度的列,必须通过编程完成。一个有用的工具:DynamicJasper

  

DynamicJasper创建报告   动态地,在运行时定义   列,列宽(自动宽度),   组,变量,字体,图表,   交叉表,子报告(也可以   是动态的),页面大小和一切   否则你可以在设计中定义   时间。

答案 2 :(得分:-2)

在iReport中有一个名为“Stretch Type”的选项。选择“相对于乐队的高度”