Skip to content

Cells with embedded carriage returns are not surrounded by quotes #315

@lespea

Description

@lespea

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
───────┴──────────────────────────────────────


Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions