【问题标题】:Can JasperReports produce Excel file with column widths auto adjusted to contents?JasperReports 可以生成列宽自动调整为内容的 Excel 文件吗?
【发布时间】:2009-07-03 10:08:11
【问题描述】:

JasperReportsExcel xls 格式输出文件时,查看时的列仅是jasper XML 中确定的固定宽度。

当列中的数据具有不同的宽度时,这是一个问题,导致某些列换行。

我查看了APIDTD,似乎没有办法将列宽设置为自动调整。

即不是显示为

邮箱地址 @email.com

显示为

电子邮件地址@email.com

有可能做到这一点吗?

这个问题类似于Jasper report column width

【问题讨论】:

    标签: jasper-reports export-to-excel


    【解决方案1】:

    我们可以借助 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 中打开):


    注意事项

    • 在这两种情况下,xls 文件都是在 Jaspersoft Studio 中生成的。
    • Advanced Excel Features 文章包含有关将报告导出为 MS Excel 格式的技巧的更多信息

    【讨论】:

      猜你喜欢
      • 2021-11-05
      • 1970-01-01
      • 2016-01-21
      • 2015-10-31
      • 2018-02-02
      • 1970-01-01
      • 2018-07-18
      • 2011-03-22
      • 2011-02-22
      相关资源
      最近更新 更多