Sur*_*j M 3 java jasper-reports fixed-width
我们需要使用JasperReports生成文本报告。
精度要准确,样本格式如下

所述的JasperReports,exportToText方法不满足上述标准和反复调整的.jrxml未投放的目的。
我们也调整了字符宽度和字符高度,但行和列之间的间距仍然不正确。
JasperReports API是否支持文本格式的这种精度?
有没有其他 API 可以帮助我们实现这种格式?
是的,您可以使用JasperReports实现您的设计。
第一步。我们应该知道行中的字符数和页面上的行数。为此,
我们可以使用成对的net.sf.jasperreports.export.text.page.width和net.sf.jasperreports.export.text.page.height报告的属性。您还可以使用net.sf.jasperreports.export.text.character.width和net.sf.jasperreports.export.text.character.height对报告的属性而不是第一个属性。
第二步。我们知道页面格式大小(例如以像素为单位。对于没有边距的 A4,它是:555x802)并且我们设置了行中的字符数和页面中的行数。我们可以计算和设置staticText和textField元素位置的确切值(x,y坐标以及元素的宽度和高度属性),
我使用了csv数据源(points.csv文件):
USER_NAME,LAST_ACCESSED,IS_ACTIVE,POINTS
John Doe,10/26/2013,Y,87.9
Sarah Connor,10/23/2013,Y,80.5
Viktor Navorski,10/14/2013,Y,95.5
Forrest Gump,10/25/2013,Y,97.0
Raymond Babbitt,10/24/2013,Y,88.5
Thomas Crown,10/24/2013,Y,88.0
Danny Ocean,09/30/2013,Y,90.5
Run Code Online (Sandbox Code Playgroud)
我已经删除了边距并设置了A4报告的格式(555x802 像素)。

USER_NAME,LAST_ACCESSED,IS_ACTIVE,POINTS
John Doe,10/26/2013,Y,87.9
Sarah Connor,10/23/2013,Y,80.5
Viktor Navorski,10/14/2013,Y,95.5
Forrest Gump,10/25/2013,Y,97.0
Raymond Babbitt,10/24/2013,Y,88.5
Thomas Crown,10/24/2013,Y,88.0
Danny Ocean,09/30/2013,Y,90.5
Run Code Online (Sandbox Code Playgroud)
我使用iReport生成输出文件。这个txt文件的内容是:

如果使用Java代码,我们应该为JRTextExporter设置以下参数:JRTextExporterParameter.PAGE_WIDTH和JRTextExporterParameter.PAGE_HEIGHT
示例代码:
<?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="text_output" language="groovy" pageWidth="555" pageHeight="802" columnWidth="555" leftMargin="0" rightMargin="0" topMargin="0" bottomMargin="0" uuid="9a0b1db2-1ed0-44e1-960b-4626cea0097d">
<property name="net.sf.jasperreports.export.text.page.width" value="80"/>
<property name="net.sf.jasperreports.export.text.page.height" value="40"/>
<field name="USER_NAME" class="java.lang.String"/>
<field name="LAST_ACCESSED" class="java.lang.String"/>
<field name="IS_ACTIVE" class="java.lang.String"/>
<field name="POINTS" class="java.lang.String"/>
<columnHeader>
<band height="43" splitType="Stretch">
<staticText>
<reportElement uuid="d065f8ed-0c05-47d0-a679-a392c9cfabe5" x="0" y="0" width="152" height="20"/>
<textElement/>
<text><![CDATA[USER_NAME]]></text>
</staticText>
<staticText>
<reportElement uuid="573550a9-5fc9-41ee-ae4f-7b550868c75d" x="152" y="0" width="143" height="20"/>
<textElement/>
<text><![CDATA[LAST_ACCESSED]]></text>
</staticText>
<staticText>
<reportElement uuid="4b1f5b5c-4c61-4159-9357-041fd8e3e775" x="295" y="0" width="138" height="20"/>
<textElement/>
<text><![CDATA[IS_ACTIVE]]></text>
</staticText>
<staticText>
<reportElement uuid="1c851f50-9ace-4e30-be1e-7d5454127db8" x="433" y="0" width="103" height="20"/>
<textElement/>
<text><![CDATA[POINTS]]></text>
</staticText>
<staticText>
<reportElement uuid="7e358a83-b348-40ca-b6f4-009d6bed4b24" x="0" y="20" width="100" height="23"/>
<textElement/>
<text><![CDATA[----------------------]]></text>
</staticText>
<staticText>
<reportElement uuid="523a7abd-0fbd-4b63-b8d5-2ed78ee795cc" x="295" y="20" width="100" height="23"/>
<textElement/>
<text><![CDATA[---------]]></text>
</staticText>
<staticText>
<reportElement uuid="7ebe2ec7-9450-4fdf-b99a-48af5fe3ce49" x="152" y="20" width="100" height="23"/>
<textElement/>
<text><![CDATA[-------------]]></text>
</staticText>
<staticText>
<reportElement uuid="155d3972-9d99-4d3b-bb41-05f08dcdd5fa" x="433" y="20" width="100" height="23"/>
<textElement/>
<text><![CDATA[--------]]></text>
</staticText>
</band>
</columnHeader>
<detail>
<band height="20" splitType="Stretch">
<textField>
<reportElement uuid="652256e2-0f1e-4848-b1d0-d064caaa5020" x="0" y="0" width="152" height="20"/>
<textElement/>
<textFieldExpression><![CDATA[$F{USER_NAME}]]></textFieldExpression>
</textField>
<textField>
<reportElement uuid="380af714-4dbd-4e0f-ae23-bfada0449a2f" x="152" y="0" width="143" height="20"/>
<textElement/>
<textFieldExpression><![CDATA[$F{LAST_ACCESSED}]]></textFieldExpression>
</textField>
<textField>
<reportElement uuid="752c0f18-2dea-4209-bd0d-d787d8c462a8" x="295" y="0" width="63" height="20"/>
<textElement textAlignment="Right"/>
<textFieldExpression><![CDATA[$F{IS_ACTIVE}]]></textFieldExpression>
</textField>
<textField>
<reportElement uuid="40807ad0-58a4-42b7-9636-04f01c0c3bf5" x="433" y="0" width="54" height="20"/>
<textElement textAlignment="Right"/>
<textFieldExpression><![CDATA[$F{POINTS}]]></textFieldExpression>
</textField>
</band>
</detail>
</jasperReport>
Run Code Online (Sandbox Code Playgroud)
在此示例中,我使用了与数据源相同的csv文件。
在您的示例中,您希望以 23 个符号开始第二列。好的,让我们看看我的样本。我们有什么:
在这种情况下,一个字符的宽度是555/80=6,9375。
我们在第 2 列中的第一个符号之前有 22 个符号。它是22*6,9375=152,625像素。在我的示例中,我为第二列标题的x属性设置了152。在我的示例中,第 2 列标题中的第一个符号的位置为23。
对于第三列,计算值是43*6,9375=298,3125,我的样本中的实际x是295(第三列带有44 个符号的星号)。
如您所见,计算过于准确。
笔记:
您可以在此处找到有关导出到文本文件的信息:文本导出示例
| 归档时间: |
|
| 查看次数: |
17105 次 |
| 最近记录: |