I recently was silly enough to get myself talked into using CSV for storage. Anyway one bug I found was simply that admins were typing a multiline comment into a field, which did not get caught by the DBI wrapper nor by binary type (CSV_XS). So I just escaped it with a pipe sigil like "|CR" (of course also escaping standalone pipemarks too) and restored the carriage return later. You should also note that in Excel you can type somehow a vertical tab which will break CSV too. My recommendation is don't use CSV, just generate it with CSV_XS or Text::CSV maybe when outputting it. I used a download button which would let you open it in Excel. In general these problems do come up but as far as I know, CSV's basic premise is one line per record.
Personally I would not trust that binary setting, it didn't work for me and I got corrupted data when using 8-bit (Japanese SJIS) data. Constrain/pack your data into the ascii range mentioned in one of the CSV module docs or sweat it.