Я создаю csv из массива массивов, используя fputcsv() . Одно из полей содержит фрагмент кода html, и это вызывает проблемы, когда я открываю его в Excel.
При открытии в Excel он разбивается на несколько ячеек.
Обратите внимание, что в fputcsv я использовал ,
в качестве разделителя и "
в качестве закрывающего элемента.
Тем не менее я мог видеть, что строка html была разбита на несколько ячеек, и это происходило из-за запятых внутри htmlcontent.
Итак, как я могу избежать запятых?
На данный момент я заменил запятые пробелами. Но все же я вижу, что длинный html-код (около 53823 символов) разбивается на несколько ячеек при открытии в MS Excel. Существует ли какой-либо верхний предел количества символов, которые может содержать одна ячейка в Excel?
Обратите внимание, что когда я открываю свой CSV в Notepad++, он показывает, что CSV правильно сформирован без каких-либо перерывов между ними. Однако мой клиент использует MS Excel, и его трудно убедить в том, что CSV-файл на самом деле правильно сформирован. Пожалуйста помоги.
Вот код, который я использовал:
//escape the newline characters
$template = str_replace(array("\r\n", "\n", "\r", "\t"), '', $template);
$cache = str_replace(array("\r\n", "\n", "\r", "\t"), '', $cache);
$fh = fopen('abc.csv', 'a');
fputcsv($fh,array($template,$cache),',','"');
$template
и $cache
имеют фрагмент кода html в качестве значений поля.
Кроме того, я заметил, что если я не экранирую ,
, строка разрывается на несколько ячеек. Для этого я пытался str_replace(",","\,",$string)
но безрезультатно.
Обновление: Проблема возникает в тех случаях, когда внутри строки встречаются как кавычки, так и запятая. например, рассмотрим строку I have "big" quesiton, that I want to know.
"I have "big" quesiton"
находится в одной ячейке, а "that I want to know."
— в другой, а не вся строка в одном столбце.
(")
? Если это так, вы должны экранировать их, используя обратную косую черту(\)
- person andho   schedule 18.02.2013fputcsv
под PHP 5.3.10 и открыл в Excel 2003, все работает нормально. Попробуйте сократить свой подозрительно длинный HTML-код до гораздо более короткого для проверки. - person Passerby   schedule 18.02.2013