2010-01-14 2 views

ответ

18

Импорт из файлов 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/, что может быть полезно.

+0

С другой стороны, для Excel 2007, http://phpexcel.codeplex.com/ очень приятно. – AlexV

0

Лучше всего экспортировать из Excel в CSV (значения, разделенные запятыми). Эти файлы легко разобрать и загрузить. Если вы читаете напрямую из файла XLS, я не знаю, как это сделать. Возможно, вам захочется посмотреть и посмотреть, есть ли libarary для PHP, который может читать файлы данных Excel.

8

Достаточно. Вы можете сохранить файл 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); 
0

Here «Учебник по чтению/письму электронной таблицы Excel напрямую (без экспорта в CSV). Необходимые пакеты доступны от SourceForge и PEAR (см. Статью).

-1
<? 
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>”; 

} 
?> 

Source