неадекватный блог

1 февр. 2009 г.

Импорт CSV из Excel на PHP

Столкнулся с проблемой импорта xls-таблицы, сохраненной в csv. Изначально делалось так:


$data = file($file_name);
foreach ($data as $key => $val) {
  // здесь обрабатываем каждую запись в таблице
}

Пока данные в таблице однострочные, всё прекрасно работает. Но как только в одном из полей появляется символ новой строки, мы получаем массив $data, в котором части строк с разделителями попадают в новый элемент массива.

Решение оказалось достаточно элементарным. Excel при сохранении CSV разделяет строки символами CR+LF, а многострочные записи в одном поле только символом LF. Таким образом получаем следующий код:


$str = file_get_contents($file_name);
$data = explode("\r\n", $str); 
  // а дальше всё так же, как в предыдущем варианте :)
foreach ($data as $key => $val) {
  // здесь обрабатываем каждую запись в таблице
}

Как обрабатывать сами строки — это уже немного другой вопрос. Главное не забывать, что строковые данные заключаются в двойные кавычки, а двойные кавычки внутри текстовых полей просто дублируются.

Комментариев нет:

Отправить комментарий