2008-11-18 88 views
5

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

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

<td style="width: 20px; height: 17px;"> 
    <span style="font-family: Arial; font-size: 11px;">[email protected]</span> 
</td> 

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

干杯, 唐

+0

您是否尝试过使用[iReport](http://jasperforge.org/plugins/project/project_home.php?group_id=83)。它是一个用于编写JasperReports的IDE。它可以让你的生活更简单。 – Tom 2009-04-23 14:48:04

+0

我有同样的问题。如果你希望列在整个可用宽度上均匀分布,那么它是不可能的。在Jasper Stuido中,当您创建一个包含10列的表格时,它将列成一个宽度仅为22px的小区域。您必须先编辑每个单元格,然后手动将宽度更改为您计算的某个值 - 这需要数小时。然后当你想改变它..出于这个原因,我永远不再使用表。我使用子报表来处理所有事情,因为您可以通过拖动来改变它们的宽度。 – 2014-09-08 13:33:11

回答

4

虽然不完美,你可以标记字段与溢出拉伸。这至少会给你所有的数据。在您的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> 

我怕我不知道碧玉的任何特征的报告说,将允许列宽的动态调整 - 这可能是其中的一件事情是对于HTML而言是有意义的,但对于其他输出格式(如PDF)来说意义不大。

+0

同意杰米·爱。但是我会在columnHeader标签上应用他的建议,以便为整个列应用该属性。 – 2009-04-23 14:38:30

+0

太棒了,谢谢!我发现当列伸展以适应内容时,相邻列旁边没有填充。在'textField`元素中添加'`修复了[this SO answer](http://stackoverflow.com/a/14284593/848668) – br3nt 2016-06-30 01:37:40

-2

在iReport中有一个名为“拉伸类型”的选项。选择“相对于带高度”

3

开发人员有意识地决定不允许单元格宽度拉伸。要根据内容来改变列的宽度,必须通过编程来完成。一个有用的工具:DynamicJasper

DynamicJasper的创建报告动态 ,在运行时定义所述 和柱,柱的宽度(自动宽度) 基,变量,字体,图表, 交叉表,子报告(即也 可以是动态的),页大小和一切 其他,你可以在设计 时间定义。