Версия для печати. Взято с сайта phpsql.ru

На главную   Назад   Вперед

Чтение CSV-файлов

Преобразование Excel-таблиц в HTML. Чтение CSV-файлов

Одна из часто встречающихся задач программистов - это преобразование данных из листов Excel в более пригодную форму, например в HTML или в MySQL-таблицы. Если мы при этом будем работать с электронными книгами в формате Excel, мы создадим себе настоящую проблему. К счастью, Excel и ее аналог из OpenOffice могут экспортировать данные в формат CSV (comma-separated value) - обычный текстовый формат, в котором ряд данных представлен отдельной строкой, а поля ряда разделяются запятыми. Сделать это можно прямо в Excel. Пример такого файла см. ниже, вот его и можно уже преобразовать в HTML:

"Airport","City","Activity"
"LON","London","Museums"
"PAR","Paris","Dining"

Первое, что приходит в голову, - это прочитать строки и разбить их на отдельные значения по разделителю - запятой. Но в этом случае вам нужно позаботиться о кавычках, слэшах и других особенностях этого формата. Разработчики РНР облегчили нам жизнь и создали специальные функции для обработки CSV-файлов. Функция fgetcsv () подобна функции fgets (), за исключением того, что она возвращает массив, содержащий значения ряда данных вместо строки. Рассмотрим небольшой сценарий, загружающий CSV-файл:

<table> 
<tr>
  <th>Поле 1</th>
   <th>Поле 2</th>
  <th>Пoлe 3</th>
</tr>
<?php
$fn = $_FILES["csvfile"] ["tmp_name"] ; 
$fd = fopen($fn,  "r") ; 
while (!feof($fd))  {
  $fields = fgetcsv($fd) ;
  print "<tr>";
  print "<td>$fields[0]</td><td>$fields[1] </td><td>$fields[2]</td>"; 
  print "</tr>";
}
fclose($fd) ; 
?>
</table>
Как видите, сценарий выводит первые три колонки CSV-файла в формате HTML-таблицы.
Иногда вам придется столкнуться с файлом, в котором ряды данных разграничены табуляцией, а не запятыми. Для чтения таких файлов вам нужно передать дополнительный параметр функции fgetcsv () - разделитель:
$fields = fgetcsv($fd, 0, "\t");
Второй параметр функции - это максимальная длина строки CSV-файла (О - неограниченная длина).

 
Предыдущая   На главную   Следующая