csv jasper报告中的额外逗号

时间:2011-08-05 10:10:02

标签: csv jasper-reports comma extra

我已经用pdf和csv格式编写了相同的jrxml来导出报告。 pdf报告很好,但是对于csv报告,它会在一行中插入额外的逗号。

以下是csv报告输出的示例:

TXN ID ,, TXN TIME ,,, AGENT,DP USER,USECASE,AMOUNT ,, COMMN 10000799 ,,,7/27/11下午7:58 ,,,总部,总部,标准输入,0 EUR ,, 0

可以看出,在txn id之后有两个逗号,在txn time之后有三个逗号。

我知道如何避免使用这些额外的逗号?

这是XML的一部分

<staticText>
<reportElement key="element-91" x="0" y="27" width="60" height="16" forecolor="#FFFFFF"/>
<box leftPadding="2" rightPadding="2">
    <topPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
    <leftPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
    <bottomPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
    <rightPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
</box>
<textElement textAlignment="Center" verticalAlignment="Middle">
    <font fontName="" size="12"/>
</textElement>
<text><![CDATA[TXN ID]]></text>
</staticText>
<staticText>
<reportElement key="element-90" x="60" y="27" width="65" height="16" forecolor="#FFFFFF"/>
<box leftPadding="2" rightPadding="2">
    <topPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
    <leftPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
    <bottomPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
    <rightPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
</box>
<textElement textAlignment="Center" verticalAlignment="Middle">
    <font fontName="" size="12"/>
</textElement>
<text><![CDATA[TXN TIME]]></text>
</staticText>

谢谢!

5 个答案:

答案 0 :(得分:1)

这可能与报告中的图形布局有关。在TXN ID和TXN TIME元素之间,报告设计中可能存在一些水平空间,而元素AGENT和DP USER可以彼此相邻,没有水平间隙。 CSV导出器尝试创建类似于报表设计的布局,至少在电子表格应用程序中查看时。

答案 1 :(得分:1)

我遇到了类似的问题,问题原因是设计师视图中字段的垂直错位。解决方案是确保所有场元素都在相同的垂直位置/级别上开始(即在设计器视图中将属性“top”设置为对所有字段相同,例如top = 0)。

  • midestar

答案 2 :(得分:1)

设计CSV导出报告: http://community.jaspersoft.com/wiki/designing-reports-csv-export

我添加了下一个提示: 检查“打印重复值”是否已启用

我希望这可能有用。

答案 3 :(得分:0)

在遇到相同类型的问题时发现了这个问题,以了解我的报告的样子:

ColumnHeader [Field1, Field2, Field3]
Detail Band  [List]

我的名单在哪里:

[field1|field2|field3]

我看到了相同类型的问题:

  • 没有标题的CSV效果很好
  • 带有标题的CSV在字段之间添加了多余的逗号

调试后,我发现在JRCsvExporter的第232行

if (xCuts.getCut(x).isCutNotEmpty())

是正确的,这就是为什么要加上逗号的原因。我不完全确定CutInfo的来源,也没有花时间进行调试来找出它。但它们无疑发挥了巨大作用。我发现您需要确保CSV中所有列的大小均正确(不仅仅是数字)。

经过一番艰苦的手动移动后,我发现列表的第1列比列标题Column 1的大小小1像素。在手动确保标题的每一列与列表中各列的宽度匹配之后,报告导出时没有多余的逗号。

答案 4 :(得分:0)

解决方案是将报表级别的参数** Before ** 1 -> 2 -> 3 -> 4 -> 5 ** After ** 5 -> 1 -> 2 -> 3 -> 4 设置为 test_df <- data.frame("ID" = c(1,3,6,8), "char" = c("a","b","c","d")) isin<-function(x,data) {if(length(which(data$ID == x, arr.ind=TRUE))>=1) {data[which(data$ID == x, arr.ind=TRUE),]} else{"not in list"}} > isin(x=3,data=test_df) ID char 2 3 b > isin(x=2,data=test_df) [1] "not in list"