从CSV文件Java中清除回车符

时间:2012-04-26 15:29:48

标签: java excel csv return

我已经看到了许多问题的答案。我尝试了所有这些,但没有一个适合我。当我导出我的excel文件时,如果有回车符,则输入数据,该数据应该转到下一列而不是新行。

我正在尝试在列级别删除回车符,如下所示:

String col = columnName.replaceAll("\r", "");
             reportColumn.put( "column", col ); 

这将遍历每个块并填充excel表。此外,我正在尝试使用包含整个csv文件的字符串删除回车:

String csv = "";

CSVReportGenerator generator = new CSVReportGenerator( );
generator.setReportColumns( this.reportColumns );
generator.setReportRows( rows );
generator.setApplicationPath("");
generator.setNL('\n');
generator.setDebuggingON(Config.DEBUGGING_ON);
generator.produceReport( );
csv = generator.getCSV( );

csv.replaceAll(",,", "");
csv.replaceAll(".", "");
csv.replaceAll("\r", "");
csv.replaceAll("\n", "");
csv.replaceAll("\r\n", "");
csv.replaceAll("\\r\\n", "");

正如您所看到的,我尝试了几种不同的方法来尝试删除回车。谁能告诉我我做错了什么?

2 个答案:

答案 0 :(得分:0)

你可以尝试

System.getProperty("line.separator")

这样做的一个优点是它与平台无关。

答案 1 :(得分:0)

重述您的问题:您的Excel文档包含包含新行的单元格。您希望将此文档导出为CSV,并且单元格中的新行正在破坏CSV文件。

删除换行符

您似乎尝试在写入CSV时从每个单元格中删除新行,但声明它似乎不起作用。在您给出的代码中,只替换\ r \ n字符,而不是\ n字符。我会试试这个:

String col = columnName.replaceAll("[\r\n]", "");
reportColumn.put( "column", col );

将替换所有可以解释为换行符的字符(实际上在Windows上,换行符通常是两个字符\ r \ n)。

就删除换行符的正则表达式而言,这里是纲要:

",,"  // Removes two commas, not newlines
"."  // Removes all characters, except newlines
"\r" // Removes the "carriage return" characters (half of the Windows newline)
"\n" // Removes the "new line" characters (half of the Windows newline)
"\r\n" // Removes a Windows newline but not individual newline characters
"\\r\\n"  // Same as "\r\n" but the escapes are handled by the regex library rather than the java compiler.
"[\r\n]" // Should remove any newline character.
"[\\r\\n]" // Same as above but with extra escaping.

编写转义换行符

应该可以生成包含单元格内新行的CSV文件。事实上Excel本身可以做到这一点。这里有一个ExcelCSVPrinter java库,可以完成您所需的所有转义:http://ostermiller.org/utils/CSV.html

这是一行excel格式csv:

"cell one","first line of cell two
second line of cell two","cell three"

http://ostermiller.org/utils/CSV.html还提供了一个ExcelCSVParser Java库,用于读取Excel CSV格式。