Одна из часто встречающихся задач программистов - это преобразование данных из листов Excel в более пригодную форму, например в HTML или в MySQL-таблицы. Если мы при этом будем работать с электронными книгами в формате Excel, мы создадим себе настоящую проблему. К счастью, Excel и ее аналог из OpenOffice могут экспортировать данные в формат CSV (comma-separated value) - обычный текстовый формат, в котором ряд данных представлен отдельной строкой, а поля ряда разделяются запятыми. Сделать это можно прямо в Excel. Пример такого файла см. ниже, вот его и можно уже преобразовать в HTML:
"e;Airport"e;,"e;City"e;,"e;Activity"e;
"e;LON"e;,"e;London"e;,"e;Museums"e;
"e;PAR"e;,"e;Paris"e;,"e;Dining"e;
Первое, что приходит в голову, - это прочитать строки и разбить их на отдельные значения по разделителю - запятой. Но в этом случае вам нужно позаботиться о кавычках, слэшах и других особенностях этого формата. Разработчики РНР облегчили нам жизнь и создали специальные функции для обработки CSV-файлов. Функция fgetcsv () подобна функции fgets (), за исключением того, что она возвращает массив, содержащий значения ряда данных вместо строки. Рассмотрим небольшой сценарий, загружающий CSV-файл:
<table>
<tr>
<th>Поле 1</th>
<th>Поле 2</th>
<th>Пoлe 3</th>
</tr>
<?php
$fn = $_FILES["e;csvfile"e;] ["e;tmp_name"e;] ;
$fd = fopen($fn, "e;r"e;) ;
while (!feof($fd)) {
$fields = fgetcsv($fd) ;
print "e;<tr>"e;;
print "e;<td>$fields[0]</td><td>$fields[1] </td><td>$fields[2]</td>"e;;
print "e;</tr>"e;;
}
fclose($fd) ;
?>
</table>
Как видите, сценарий выводит первые три колонки CSV-файла в формате HTML-таблицы.
Иногда вам придется столкнуться с файлом, в котором ряды данных разграничены табуляцией, а не запятыми. Для чтения таких файлов вам нужно передать дополнительный параметр функции fgetcsv () - разделитель:
$fields = fgetcsv($fd, 0, "e;\t"e;);
Второй параметр функции - это максимальная длина строки CSV-файла (О - неограниченная длина).
|