(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 
 

Как с помощью php перенести данные из xls(exel) в mysql?

Источник: slyweb
slyweb

Порой для работы требуется извлекать данные из файлов xls в базу данных, что обычными срдествами php не возможно. Поэтому приходится обращаться к дополнительным пакетам pear, об одном из которых мы раскажем далее. Оказывается записать данные в xls формат куда проще нежели их извлечь. Объяснятеся это отсутствием пока достаточно стабильного инструмента для веб программиста.

Например, если поискать в интеренете классы php выполняющие соответствующие функции, то их наберётся не более двух - трёх, и большая часть из которых платные.

Однако не всё так плохо, на стадии пробной разработки находится пакет pear http://pear.php.net/pepr/pepr-proposal-show.php?id=492 , о возможностях которого мы и поговрим далее.

Стандартные методы пакета Spreadsheet_Excel_Reader:

"PHP"
$data = new Spreadsheet_Excel_Reader(); - Создаёт новый класс Spreadsheet_Excel_Reader()
$data->setOutputEncoding('CP1251'); - Устанавливает кодировку
$data->sheets[0]['numRows'] - Выводит количество строк в таблице xls файла
$data->sheets[0]['numCols'] - Выводит количество столбцов в строке таблицы xls файла
$data->sheets[0]['cells'][$i][$j] - Выводит данные определенного столбца, определенной строки
$data->sheets[0]['cellsInfo'][$i][$j] - расширенная информация о столбцах
пример ($data->sheets[0]['cellsInfo'][$i][$j]['type'] = "date" / "number" / "unknown"
)
если значение 'type' == "unknown" - используйте значение 'raw', потому что столбец содержит переменную формата '0.00';
$data->sheets[0]['cellsInfo'][$i][$j]['raw'] = значение столбца если формат не определён  
$data->sheets[0]['cellsInfo'][$i][$j]['colspan'] 
$data->sheets[0]['cellsInfo'][$i][$j]['rowspan'] 
По умолчанию строки и столбцы начинаются с 1
Для изменения этого значения используйте:
$data->setRowColOffset(0);

Разабравшись с основными методами, можно указать способ с помощью которого добавляются данные из файла xls в таблицу базы данных mysql. Следует отметить, что для собирания информации о столбцах приемущетсвенно стоит использовать цикл for(), так как он обрабатывает значения массива без удаления пустых столбцов, в отличие от foreach().

Чтобы было куда отправлять данные скачайте таблицу базы данных mysql - Скачать (zip).

Так же вам понадобится xls файл, для примера можете взять этот - Скачать (zip), ну и самое главное - скачайте пакет http://pear.php.net/pepr/pepr-proposal-show.php?id=492 .

Укажите правильно путь к файлу reader.php - require_once('Excel/reader.php');

Примечание: Если Вы скачали пакет с официального сайта, то xls файл, скорее всего, будет нерабочим, по крайней мере у меня он в Linux Ubuntu не открывался.Поэтому замените его на рабочий файл.

Ниже указан полностью рабочий скрипт загрузки таблицы exel в базу данных mysql. Внимательно читайте комментарии к скрипту.

"PHP"
<?php
$connect = mysql_connect("localhost","USER","PASS");
$db = mysql_select_db("DB",$connect) or die(mysql_error());
require_once ('Excel/reader.php');
$data = new Spreadsheet_Excel_Reader();
$data->setOutputEncoding('cp-1251');
$data->setUTFEncoder('mb');
$data->read('1.xls');
error_reporting(E_ALL);
for($j=3; $j<=$data->sheets[0]['numRows']; $j++) // Начинаем выводить данные начиная с третьей строки
{
for($i=0; $i<=$data->sheets[0]['numCols']; $i++) // Начинаем выводить данные для всех столбцов
{
if(empty($data->sheets[0]['cells'][$j][$i]))
{
$row[] = "'empty'"; // Ликвидируем ошибку undefined offset 
}
else
{
$row[] = "'".$data->sheets[0]['cells'][$j][$i]."'"; // Создаём массив из значений столбцов для каждой строки
}
}
	$row = implode(",", $row); // Объединяем массив в строку, для запроса mysql
	$sql = "INSERT INTO `xls`  VALUES ($row)"; // Создаём запрос mysql
	mysql_query("SET NAMES 'cp1251'"); // Устанавливаем кодировку для mysql
   if(!mysql_query($sql)) // Выполняем запрос mysql 
   {
   echo 'Error: '.mysql_error();
   }		
   else 
   {
   echo 'Add success!<br>';
   }
unset($row); // Удаляем переменную, чтоб массив со строкой не путался
}
?>

Ссылки по теме


 Распечатать »
 Правила публикации »
  Написать редактору 
 Рекомендовать » Дата публикации: 22.06.2012 
 

Магазин программного обеспечения   WWW.ITSHOP.RU
EMS SQL Management Studio for PostgreSQL (Business) + 1 Year Maintenance
VMware Fusion 10 Pro, ESD
IBM RATIONAL Clearcase Floating User From Rational Clearcase Lt Floating User Trade Up License + Sw Subscription & Support 12 Months
ABBYY Lingvo x6 Многоязычная Профессиональная версия, электронный ключ
Stimulsoft Reports.Ultimate Single License Includes one year subscription
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Новости ITShop.ru - ПО, книги, документация, курсы обучения
СУБД Oracle "с нуля"
OS Linux для начинающих. Новости + статьи + обзоры + ссылки
Новые материалы
Компьютерная библиотека: книги, статьи, полезные ссылки
Windows и Office: новости и советы
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
 



    
rambler's top100 Rambler's Top100