По сути, жесткий возврат в Excel (shift + enter или alt + enter, я не помню) помещает новую строку, эквивалентную \ x0A, в кодировке по умолчанию, которую я использую для написания CSV. Когда я пишу в CSV, я использую StreamWriter.WriteLine (), который выводит строку плюс символ новой строки (который, я считаю, \ r \ n).
CSV в порядке и выходит именно так, как Excel сохранит его, проблема в том, что когда я читаю его в чистую запись для удаления, я использую ReadLine (), который будет обрабатывать запись со встроенным переводом строки как CRLF.
Вот пример файла после преобразования в CSV ...
Reference,Name of Individual or Entity,Type,Name Type,Date of Birth,Place of Birth,Citizenship,Address,Additional Information,Listing Information,Control Date,Committees
1050,"Aziz Salih al-Numan
",Individual,Primary Name,1941 or 1945,An Nasiriyah,Iraqi,,Ba’th Party Regional Command Chairman; Former Governor of Karbala and An Najaf Former Minister of Agriculture and Agrarian Reform (1986-1987),Resolution 1483 (2003),6/27/2003,1518 (Iraq)
1050a,???? ???? ???????,Individual,Original script,1941 or 1945,An Nasiriyah,Iraqi,,Ba’th Party Regional Command Chairman; Former Governor of Karbala and An Najaf Former Minister of Agriculture and Agrarian Reform (1986-1987),Resolution 1483 (2003),6/27/2003,1518 (Iraq)
Как вы можете видеть, первая запись имеет встроенную новую строку после al-Numan. Когда я использую ReadLine (), я получаю «1050», «Азиз Салих аль-Нуман», и когда я записываю это, WriteLine () заканчивает эту строку с помощью CRLF. Я теряю исходный терминатор строки. Когда я снова использую ReadLine () Я получаю строку, начинающуюся с '1050a'.
Я мог бы прочитать весь файл и заменить их, но потом мне пришлось бы заменить их обратно потом. По сути, я хочу получить терминатор строки, чтобы определить, является ли он \ x0a или CRLF, а затем, если это \ x0A, я использую Write () и вставлю этот терминатор.