开发人员有意识地决定不允许单元格宽度拉伸。要让列根据内容改变宽度,必须通过编程来完成。一个有用的工具: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();
调用true
时传入addColumn
表示使用固定宽度。关闭或传递参数false
将动态设置列宽。您可能还需要调用setUseFullPageWidth( true )
自动宽度来激活,但我不确定这一点。