2012-04-25 115 views
1

每當我將碧玉報告導出到CSV文件時,如果文本字段包含新的行字符,CSV內部的記錄將用兩行而不是一行表示。 我們可以在碧玉報告中做什麼設置,它會忽略文本字段中出現的新行字符? 我們使用iReport來設計碧玉報告。任何形式的幫助表示讚賞。 謝謝如何使Jasper Reports忽略文本字段中的換行符?

+0

您可以使用[net.sf.jasperreports.csv.record.delimiter](http://jasperforge.org/uploads/publish/jasp erreportswebsite/trunk/config.reference.html#net.sf.jasperreports。 csv.record.deli miter)屬性設置分隔符 – 2012-04-25 19:32:34

+0

我試着在java代碼中設置分隔符。代碼 JRPrintServiceExporter exporter = new JRPrintServiceExporter(); exporter.setParameter(JRCsvExporterParameter.RECORD_DELIMITER,「\ r \ n」); '代碼' 但它沒有奏效。 – user613114 2012-04-26 06:57:32

+0

你使用雙引號嗎?您可以閱讀[此csv格式的要求](http://www.csvreader.com/csv_format.php) – 2012-04-26 07:32:22

回答

0

這聽起來不像是一個分隔符問題。您的源數據在某個地方有一個新行。 JasperReports將報表中的數據導出,因此它具有此新行字符。

這與源數據讀取「abcdefg」類似,並且您說您真的討厭字母「d」,因此您不希望它出現在生成的CSV中。當然......新生產線在某些方面是特殊的......但它仍然只是一個角色。

您可以修改CSV導出器以去掉回車符(或去掉'd')。或者你可以修改你的查詢來將它們去掉。如果你的源代碼是SQL,這將很簡單。或者你可以修改你的文本字段表達式去除它們。例如,使用Apache Commons Lang StingUtils刪除或替換新行字符。

+0

親愛的mdahlman,我試圖剝去那個特定列的新行字符。有用。但是我們有很多報告,並且實際上不可能修改每個報告中的每一列。爲了導出CSV,我們不直接使用JRCsvExporter。我們依賴於內部的jasper報告API。我想我們是否可以擴展JRCsvExporter並實現require功能。可能你能爲我們提供更多有關此解決方案的提示嗎? – user613114 2012-04-27 07:40:57

+0

我以前沒有做過這樣的擴展。這當然是可能的......但我無法估計這種努力。我首先要問JasperReports論壇。或者在這裏發佈它作爲一個新問題。這可能是有人以前做過的。 – mdahlman 2012-04-27 16:04:56