Я хочу импортировать данные из файла excel с помощью PHP, а затем, если возможно, сохранить его в базе данных MySQL.Импорт данных из Excel в PHP
ответ
Импорт из файлов Excel (XLS) намного сложнее, чем улучшение из файлов CSV. Обычно я сохранить XLS в CSV с Excel, то работать на этом CSV с PHP ...
Посмотрите на PHP функции fgetcsv по адресу: http://ca.php.net/manual/en/function.fgetcsv.php
<?php
$row = 1;
if (($handle = fopen("test.csv", "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$num = count($data);
echo "<p> $num fields in line $row: <br /></p>\n";
$row++;
for ($c=0; $c < $num; $c++) {
echo $data[$c] . "<br />\n";
}
}
fclose($handle);
}
?>
Если вы все еще хотите загрузить XLS непосредственно из PHP это возможно (но насколько он надежный) ... Быстрый поиск привел к http://sourceforge.net/projects/phpexcelreader/, что может быть полезно.
Лучше всего экспортировать из Excel в CSV (значения, разделенные запятыми). Эти файлы легко разобрать и загрузить. Если вы читаете напрямую из файла XLS, я не знаю, как это сделать. Возможно, вам захочется посмотреть и посмотреть, есть ли libarary для PHP, который может читать файлы данных Excel.
Достаточно. Вы можете сохранить файл Excel в виде CSV-файла и использовать fgetcsv() для чтения этого файла на PHP. fgetcsv()
проанализирует ваши данные в массиве, который затем вы сможете создать SQL-запросы из базы данных.
Если все, что вы делаете, помещая его в базу данных, вы можете быть в состоянии обойти необходимость в PHP скрипт полностью и просто использовать LOAD DATA INFILE
синтаксис MySQL на вашем CSV файл вместо:
LOAD DATA LOCAL INFILE '/importfile.csv'
INTO TABLE test_table
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
(field1, filed2, field3);
Here «Учебник по чтению/письму электронной таблицы Excel напрямую (без экспорта в CSV). Необходимые пакеты доступны от SourceForge и PEAR (см. Статью).
<?
i$db = mysql_connect(“localhost”, “root”, “”) or die(“Could not connect.”);
if(!$db)
die(“no db”);
if(!mysql_select_db(“test”,$db))
die(“No database selected.”);
if(isset($_POST['submit']))
{
$filename=$_POST['filename'];
$handle = fopen(“$filename”, “r”);
while (($data = fgetcsv($handle, 1000, “,”)) !== FALSE)
{
$import=”INSERT into sample(name,email) values(‘$data[0]‘,’$data[1]‘)”;
mysql_query($import) or die(mysql_error());
}
fclose($handle);
print “Import done”;
}
else
{
print “<form action=’import.php’ method=’post’>”;
print “Type file name to import:<br>”;
print “<input type=’text’ name=’filename’ size=’20′><br>”;
print “<input type=’submit’ name=’submit’ value=’submit’></form>”;
}
?>
С другой стороны, для Excel 2007, http://phpexcel.codeplex.com/ очень приятно. – AlexV