2010-01-14 90 views

Trả lời

18

Việc nhập từ tệp Excel (XLS) là khó hơn cách hiển thị từ tệp CSV. Thông thường tôi tiết kiệm XLS tôi để CSV với Excel sau đó làm việc trên CSV này với PHP ...

Nhìn vào PHP chức năng fgetcsv tại địa chỉ: 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); 
} 
?> 

Nếu bạn vẫn muốn tải XLS trực tiếp từ PHP nó có thể (nhưng đáng tin cậy như thế nào) ... Một bài giảng nhanh chóng dẫn đến http://sourceforge.net/projects/phpexcelreader/ có thể hữu ích.

+0

Mặt khác, đối với Excel 2007, http://phpexcel.codeplex.com/ là thật sự tốt đẹp. – AlexV

0

Đặt cược tốt nhất là xuất từ ​​Excel sang tệp CSV (giá trị được phân cách bằng dấu phẩy). Những tệp này dễ phân tích và tải. Nếu bạn đang đọc trực tiếp từ một tập tin XLS, tôi không chắc chắn làm thế nào để làm điều đó. Bạn có thể muốn xem và xem liệu có một libarary cho PHP có thể đọc các tệp dữ liệu Excel hay không.

8

Rất có thể. Bạn có thể lưu tệp Excel dưới dạng tệp CSV và sử dụng fgetcsv() để đọc tệp đó trong PHP. fgetcsv() sẽ phân tích dữ liệu của bạn thành một mảng, sau đó bạn có thể tạo truy vấn SQL để đưa vào cơ sở dữ liệu của mình.

Nếu tất cả các bạn đang làm là đưa nó vào một cơ sở dữ liệu, bạn có thể bỏ qua sự cần thiết của một kịch bản PHP hoàn toàn và chỉ cần sử dụng cú pháp LOAD DATA INFILE MySQL về CSV của bạn nộp thay:

LOAD DATA LOCAL INFILE '/importfile.csv' 
INTO TABLE test_table 
FIELDS TERMINATED BY ',' 
LINES TERMINATED BY '\n' 
(field1, filed2, field3); 
0

Here là một hướng dẫn về đọc/ghi một bảng tính Excel trực tiếp (mà không cần phải xuất sang CSV). Các gói cần thiết có sẵn từ SourceForge và PEAR (xem bài viết).

-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

Các vấn đề liên quan