САЙТОСТРОЙ.РУ

Разработка сайта любой сложности собственными силами - такова задача создателей сайта. Представлены лучшие советы вебмастеров, образцовые технические задания, бесценный опыт веб-мастеринга и советы в области безопасности сайтов, новые технологии веб, инструменты продвижения сайтов. Теперь создание сайтов не будет для Вас загадкой!

Приятная гостиница Измайлово Альфа г Москва бронирование. Гарантия качества. . . авиабилеты, билеты на все направления по цене авиакомпании в киеве.
Построй свой сайт!

Импорт данных из таблиц Excel


Автоматический импорт данных на сайт из файла Excel стал возможен благодаря разработке модуля Spreadsheet_Excel_Reader, который доступен в виде открытой библиотеке для разработок на языке PHP (http://pear.php.net/package/Spreadsheet_Excel_Reader). Автор модуля взял на себя титаническую работу по обработке структуры данных этого непростого формата, поэтому нам остается в удобной объектно-ориентированной форме пользоваться его возможностями. Скрипт воспринимает только текстовые поля таблиц, а также числовые, поля даты и "сырые" данные (необработанные данные в формате файла Excel).

Исходная таблица Excel

К сожалению, парсер воспринимает форматы таблиц от Excel95 до Excel 2003. Более старые версии могут интерпретироваться неправильно, вызывать зависание скрипта или сбой кодировки файла. Это ситуацию можно решить конвертированием в один из перечисленных форматов.

Алгоритм импорта данных

Импорт данных из таблицы состоит из двух этапов: загрузка данных из файла и последующая обработка массива с полученными данными. При этом в качестве входных параметров модуль получает файл Excel (.xls) и кодировку для отображения. Для кирилических сайтов эта кодировка обычно Windows-1251, или в формате модуля - CP1251 (CP - это "codepage", что значит "кодировка").

Подключение модуля

После того, как файл будет загружен на сервер (эту часть можно реализовать вольным образом, мы ее опустим), путь к нему - в нашем случае $importfile - необходимо передать на обработку скрипту:

require_once "Excel/reader.php";
$data = new Spreadsheet_Excel_Reader();
$data->setOutputEncoding("CP1251");
$data->read($importfile);
unlink($importfile);

После этого в массиве $data окажутся загруженными данные из таблицы: листы таблицы, в них строки и ячейки.

Обработка полученных данных

Будем считать, что целью обработки данных для нас будет служить их отображение на странице. Для этого запустим цикл: переберем строки, в которых переберем столбцы. Общее число столбцов для первого листа (идентификатор 0) содержится в переменной $data->sheets[0]["numCols"], а общее число строк в $data->sheets[0]["numRows"]. В переменной $data->sheets[0]["cells"][$i][$j] содержится значение ячейки таблицы.

Итак, наш код будет выглядеть следующим образом:

echo "<table width="100%" cellpadding="2" cellspacing="2" border="1">";
    for ($i=1; $i<=$data->sheets[0]["numRows"]; $i++)
    {
        echo "<tr> ";
                    
        for ($j=1; $j<=$data->sheets[0]["numCols"]; $j++)
        {
            if(isset($data->sheets[0]["cells"][$i][$j]))
            {
                $celldata=$data->sheets[0]["cells"][$i][$j];
            }
            else
            {
                $celldata="";
            }
                
            echo "<td>${celldata}</td> ";
        }
        echo "</tr> ";
    }
echo "</table>";

Результат работы скрипта

Обратите внимание, что мы осуществляем проверку на наличие данных в ячейке. Кроме того, Вам может понадобиться проверка данных, хранящихся в ячейке. Эти сведения содержатся в переменной $data->sheets[0]["cellsInfo"][$i][$j]["type"]: "date", "number", или "unknown". Необработанное значение ячейки содержится в переменной $data->sheets[0]["cellsInfo"][$i][$j]["raw"].


САЙТОСТРОЙ.РУ - практикум создания сайтов для каждого

Просим с уважением относиться к авторам сайта и при копировании документов указывать ссылки на наш сайт.