我们可以借助 net.sf.jasperreports.export.xls.auto.fit.column 属性来实现自动列宽的效果。如果我们将值设置为 true,自动宽度 将被启用。此属性的默认值为 false。
工作样本
我们可以使用 Jaspersoft Studio 中设计的 csv 数据源和简单的报告来检查结果。
报告的设计将很简单 - Detail 带中只有一个 textField。
数据源
这很简单——只有一列电子邮件。第一行只包含一列的名称。我们可以告诉数据源适配器跳过第一行。
email
emailAdress@email.com
short@have.org
a@b.net
报告模板
textField 的宽度太小,无法显示全文。
要“打开”自动宽度,我们应该设置 net.sf.jasperreports.export.xls.auto.fit.column 属性。
jrxml 将是:
<?xml version="1.0" encoding="UTF-8"?>
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="test_auto_width_excel" pageWidth="100" pageHeight="842" columnWidth="100" leftMargin="0" rightMargin="0" topMargin="0" bottomMargin="0" uuid="c899fa54-7405-4371-b34f-429f5959b593">
<queryString language="csv">
<![CDATA[]]>
</queryString>
<field name="email" class="java.lang.String"/>
<detail>
<band height="30" splitType="Stretch">
<textField>
<reportElement x="0" y="0" width="100" height="30" uuid="04d0735d-a1b6-4a8f-b252-b8772d7c5abd">
<property name="net.sf.jasperreports.export.xls.auto.fit.column" value="true"/>
</reportElement>
<textFieldExpression><![CDATA[$F{email}]]></textFieldExpression>
</textField>
</band>
</detail>
</jasperReport>
输出结果
不使用属性生成的xls文件如下(在MS Excel中打开):
生成的带有 net.sf.jasperreports.export.xls.auto.fit.column 属性的 xls 文件如下所示(在 MS Excel 中打开):
注意事项