Четене на данни от Excel (xls) файлове с PHP класа Spreadsheet_Excel_Reader
Ето продължение на статията за това как да генерираме Excel файлове с PHP. Тук ще покажем как се четат такива файлове. Това е доста полезна функция, ако трябва често да се синхронизира голяма база данни. Много по-лесно е просто да се качи променения файл, отколкото да се попълват форми и т.н.
Необходими материали
Ще ползваме класа Spreadsheet_Excel_Reader. Последната му версия може да се свали оттук.
Сега да преминем към използването му:
$reader=new Spreadsheet_Excel_Reader();
$reader->setUTFEncoder('iconv');
$reader->setOutputEncoding('UTF-8');
$reader->read($filename);
Тъй като данните за записани в UTF-16 кодиране във файла, трябва да се преобразуват до някое по-конвенционално такова. Класът ползва iconv() или mb_convert_encoding() така, че поне едно от двете трябва да е включено в PHP конфигурацията. В нашия случай setUTFEncoder() указва да се ползва iconv(). Може да променим кодирането на windows-1251 например:
$reader->setOutputEncoding('CP-1251')
Извеждане на данните
Сега да видим какво всъщност е прочетено от файла. Информацията за всеки шийт се съхранява в boundsheets променливата. Чрез този код ще се изведе името на всеки един шийт:
foreach ($reader->boundsheets as $k=>$sheet)
{
echo "\n$k: $sheet";
}
Данните, прочетени от всеки шийт се намират в променливата sheets. За всеки един се създава двумерен масив, който представлява прочетената таблица. Ето как се извеждат всички данни:
foreach($reader->sheets as $k=>$data)
{
echo "\n\n ".$reader->boundsheets[$k]."\n\n";
foreach($data['cells'] as $row)
{
foreach($row as $cell)
{
echo "$cell\t";
}
echo "\n";
}
}
Коментари:
Вен (22-04-2010 18:13) :
Този код е много стар - на около 3 години и не работи правилно с файлове, създадени с нови версии на Ексел.
Обратно към списъка със статиите
Тази страница последно е променяна на 2025-04-30 11:08:11