Dón*_*nal 5 html java 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>
Run Code Online (Sandbox Code Playgroud)
我不能简单地删除所有这些宽度属性(使用JavaScript),因为(如上面的HTML所示)使用这些宽度时隐藏的任何数据甚至不会返回到客户端
干杯,唐
虽然不完美,但你可以用溢出来标记该区域.这至少可以为您提供所有数据.在您的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>
Run Code Online (Sandbox Code Playgroud)
我担心我不知道Jasper报告的任何功能会允许动态调整列宽的大小 - 这可能是对HTML有意义的事情之一,但对其他输出格式(例如PDF)却没什么意义.
开发人员有意识地决定不允许单元宽度拉伸。对于要根据内容改变列宽度的列,必须通过编程来完成。一个有用的工具:DynamicJasper。
DynamicJasper 动态创建报告,在运行时定义列、列宽(自动宽度)、组、变量、字体、图表、交叉表、子报告(也可以是动态的)、页面大小以及您可以在设计时定义的所有其他内容。
JasperReports论坛和DynamicJasper HOW-TO都有自动(动态)列宽的示例。
FastReportBuilder drb = new FastReportBuilder();
drb.addColumn("State", "state", String.class.getName(),20)
.addColumn("Branch", "branch", String.class.getName(),30)
.addColumn("Quantity", "quantity", Long.class.getName(),60,true)
.addColumn("Amount", "amount", Float.class.getName(),70,true)
.addBarcodeColumn("Bar-Code", "amount", Long.class.getName(), BarcodeTypes.USD3, true,
false,null, 100, true, ImageScaleMode.FILL, null)
.addGroups(1)
.setDetailHeight(30)
.setTitle("November 2006 sales report")
.setSubtitle("This report was generated at " + new Date())
.setUseFullPageWidth(true);
DynamicReport dr = drb.build();
Run Code Online (Sandbox Code Playgroud)
true调用时传入addColumn表示使用固定宽度。关闭或传递该参数false将动态设置列宽。您可能还需要调用setUseFullPageWidth( true )自动宽度来激活,但我不确定这一点。