我已经看到了许多问题的答案。我尝试了所有这些,但没有一个适合我。当我导出我的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", "");
正如您所看到的,我尝试了几种不同的方法来尝试删除回车。谁能告诉我我做错了什么?
答案 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格式。