Я использую fputcsv в PHP для вывода файла с разделителями-запятыми запроса к базе данных. При открытии файла в gedit в Ubuntu он выглядит правильно - каждая запись имеет разрыв строки (нет видимых символов разрыва строки, но вы можете сказать, что каждая запись разделена, и открытие ее в электронной таблице OpenOffice позволяет мне правильно просмотреть файл.)
Однако мы отправляем эти файлы клиенту в Windows, и в их системах файл появляется в виде одной большой длинной строки. Открыв его в Excel, он вообще не распознает несколько строк.
Я прочитал здесь несколько вопросов, которые очень похожи, в том числе этот, который включает ссылку на действительно информативное объяснение Великого раскола новой строки.
К сожалению, мы не можем просто сказать нашим клиентам, чтобы они открывали файлы в «более умном» редакторе. Они должны быть в состоянии открыть их в Excel. Есть ли какой-либо программный способ обеспечить добавление правильных символов новой строки, чтобы файл можно было открыть в программе для работы с электронными таблицами в любой ОС?
Я уже использую пользовательскую функцию, чтобы принудительно заключать в кавычки все значения, поскольку fputcsv избирательно относится к этому. Я пытался сделать что-то вроде этого:
function my_fputcsv($handle, $fieldsarray, $delimiter = "~", $enclosure ='"'){
$glue = $enclosure . $delimiter . $enclosure;
return fwrite($handle, $enclosure . implode($glue,$fieldsarray) . $enclosure."\r\n");
}
Но когда файл открывается в текстовом редакторе Windows, он по-прежнему отображается как одна длинная строка.