Четене на данни от 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 години и не работи правилно с файлове, създадени с нови версии на Ексел.

Обратно към списъка със статиите

Тази страница последно е променяна на 2024-04-16 07:47:20