-
-
Notifications
You must be signed in to change notification settings - Fork 253
Closed
Description
If you write a string that contains a carriage return I thought that it would be escaped in the CSV. As it is currently, excel cannot open the generated csv without errors.
Test code
import com.univocity.parsers.csv.Csv;
import com.univocity.parsers.csv.CsvWriter;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;
public class CsvTest {
public static void main(String[] args) throws Exception {
final CsvWriter csv = new CsvWriter(
Files.newBufferedWriter(Paths.get("blah.csv"), StandardCharsets.UTF_8),
Csv.writeExcel()
);
try {
csv.writeHeaders("Label", "Value", "Trailing");
String[][] rows = {
{"Start newline", "\nabc123", "Trailing"},
{"Middle newline", "abc\n123", "Trailing"},
{"End newline", "abc123\n", "Trailing"},
{"Start cr", "\rabc123", "Trailing"},
{"Middle cr", "abc\r123", "Trailing"},
{"End cr", "abc123\r", "Trailing"},
{"Start both", "\n\rabc123", "Trailing"},
{"Middle both", "abc\n\r123", "Trailing"},
{"End both", "abc123\n\r", "Trailing"},
};
for (String[] row : rows) {
csv.writeRow(row);
}
} finally {
csv.close();
}
}
}Output
bat blah.csv
───────┬──────────────────────────────────────
│ File: blah.csv
───────┼──────────────────────────────────────
1 │ Label,Value,Trailing
2 │ Start newline,"
3 │ abc123",Trailing
4 │ Middle newline,"abc
5 │ 123",Trailing
6 │ End newline,"abc123
7 │ ",Trailing
8 │ Start cr,^Mabc123,Trailing
9 │ Middle cr,abc^M123,Trailing
10 │ End cr,abc123,Trailing
11 │ Start both,"
12 │ ^Mabc123",Trailing
13 │ Middle both,"abc
14 │ ^M123",Trailing
15 │ End both,"abc123
16 │ ",Trailing
───────┴──────────────────────────────────────
Reactions are currently unavailable