php, включая фрагмент htmlcode в качестве отдельного поля в CSV с использованием fputcsv

Я создаю 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 deGee    schedule 18.02.2013    source источник
comment
можешь показать свой код??   -  person Php Geek    schedule 18.02.2013
comment
Содержит ли ваш HTML двойные кавычки (")? Если это так, вы должны экранировать их, используя обратную косую черту (\)   -  person andho    schedule 18.02.2013
comment
Выполнил быстрый поиск, и кажется, что fputcsv действительно спасает вас. stackoverflow.com/questions/6325613/escaping-for-csv Таким образом, вам нужно опубликовать код, чтобы получить любой дальше с этим вопросом.   -  person andho    schedule 18.02.2013
comment
Протестировал короткий фрагмент HTML с fputcsv под PHP 5.3.10 и открыл в Excel 2003, все работает нормально. Попробуйте сократить свой подозрительно длинный HTML-код до гораздо более короткого для проверки.   -  person Passerby    schedule 18.02.2013


Ответы (1)


Лучше использовать бесплатный класс экспортера PHP excel от Эли Дикинсона, я родился заново, когда начал его использовать, теперь никаких проблем при создании и открытии файлов на стороне клиента. Вот ссылка: http://github.com/elidickinson/php-export-data

person Bud Damyanov    schedule 18.02.2013