当JasperReports
以 xls 格式输出文件Excel
时,查看时的列仅是 jasper XML 中确定的固定宽度。
当列中的数据具有不同的宽度时,这是一个问题,导致某些列换行。
即而不是显示为
邮箱地址 @email.com
展示为
电子邮件地址@email.com
有可能做到这一点吗?
这个问题类似于Jasper 报告列宽
当JasperReports
以 xls 格式输出文件Excel
时,查看时的列仅是 jasper XML 中确定的固定宽度。
当列中的数据具有不同的宽度时,这是一个问题,导致某些列换行。
即而不是显示为
邮箱地址 @email.com
展示为
电子邮件地址@email.com
有可能做到这一点吗?
这个问题类似于Jasper 报告列宽
我们可以借助net.sf.jasperreports.export.xls.auto.fit.column属性来实现自动列宽的效果。如果我们将该值设置为true,则将启用自动宽度。此属性的默认值为false。
我们可以使用Jaspersoft Studio中设计的csv数据源和简单报告来检查结果。
报告的设计将很简单 -详细信息带中只有一个文本字段。
这很简单——只有一栏电子邮件。第一行只包含一列的名称。我们可以告诉数据源适配器跳过第一行。
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中打开):
笔记