【问题标题】:How do I make Jasper Reports ignore newline characters in a text field?如何让 Jasper Reports 忽略文本字段中的换行符?
【发布时间】:2012-04-25 18:29:15
【问题描述】:

每当我将 jasper 报告导出到 CSV 文件时,如果文本字段包含换行符,则 CSV 中的记录将显示为两行而不是一行。 我们可以在 jasper 报告中进行任何设置,这将忽略文本字段中出现的换行符吗? 我们使用 iReport 来设计 jasper 报告。任何形式的帮助表示赞赏。 谢谢

【问题讨论】:

  • 可以使用net.sf.jasperreports.csv.record.delimiter属性设置分隔符
  • 我尝试在 java 代码中设置分隔符。 code JRPrintServiceExporter 出口商 = new JRPrintServiceExporter(); exporter.setParameter(JRCsvExporterParameter.RECORD_DELIMITER, "\r\n"); code 但是没用。
  • 你用了双引号吗?你可以阅读this requirements for csv format
  • 亲爱的 Alex,我看到的当前行为是具有 '\n' 字符的字段,在 CSV 文件中用双引号括起来。我没有使用 xls 打开 CSV 文件。我需要一种仅在记录末尾考虑 '\n' 的方法。如果字段内有任何 '\n' 字符,则应忽略它。任何提示将不胜感激。
  • 此外,当我使用文本编辑器检查确切的符号时,我看到行后有一个 CR (\r) 字符和具有换行符的字段,文本编辑器显示它有 LF (换行符)。

标签: java csv jasper-reports newline


【解决方案1】:

对我来说,这听起来不像是一个分隔符问题。您的源数据在某处有一个新行。 JasperReports 导出报表中的数据,所以它有这个换行符。

这类似于具有读取“abcdefg”的源数据,并且您说您非常讨厌字母“d”,因此您不希望它出现在生成的 CSV 中。当然...新行在某些方面很特别...但它仍然只是一个字符。

您可以修改 CSV 导出器以去除回车符(或去除 'd's)。或者您可以修改您的查询以去除它们。如果您的源是 SQL,这将很简单。或者您可以修改您的文本字段表达式以将它们删除。例如,使用Apache Commons Lang StingUtils 删除或替换换行符。

【讨论】:

  • 亲爱的 mdahlman,我尝试为该列删除换行符。有用。但是我们有很多报告,实际上不可能修改每个报告中的每一列。对于导出 CSV,我们不直接使用 JRCsvExporter。我们依赖于内部 jasper 报告 API。我在想我们是否可以扩展 JRCsvExporter 并实现 require 功能。您能否为我们提供有关此解决方案的更多提示?
  • 我以前没有做过这样的扩展。这当然是可能的......但我无法估计努力。我会先在 JasperReports 论坛上提问。或将其作为新问题发布在这里。可能有人以前做过。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多