昨晚一個(gè)客戶(hù)聯(lián)系我做網(wǎng)站,提出的要求是需要把客戶(hù)提供的excel文件里面的數(shù)據(jù)導(dǎo)入到mysql數(shù)據(jù)庫(kù),最常用的方法就是先把xls文件導(dǎo)出為csv格式的文件,然后在解析csv格式的文件導(dǎo)入到mysql數(shù)據(jù)庫(kù)。方法比較冗余,而且分好幾步進(jìn)行,很不方便,斷橋殘雪今天介紹一種方法是直接跳過(guò)csv的中間環(huán)節(jié),直接把excel文件導(dǎo)入mysql數(shù)據(jù)庫(kù)。
首先我們需要下載PHP-ExcelReader這是一個(gè)開(kāi)源的項(xiàng)目,主要是來(lái)解析excel的文件,下載地址:http://sourceforge.net/projects/phpexcelreader,下載之后解壓,主要用到excel文件夾里面的兩個(gè)文件reader.php和oleread.php(這個(gè)文件默認(rèn)的是oleread.inc,不清楚為啥,一堆e文,沒(méi)看,直接改名即可)。
在reader.php文件中找到以下類(lèi)似代碼(第一行既是),改成正確的oleread.php路徑即可:require_once 'oleread.php';
然后新建一個(gè)php文件引入reader.php,代碼如下:
<?php
require_once 'Excel/reader.php';
$data = new Spreadsheet_Excel_Reader();
$data->setOutputEncoding('gbk');此處設(shè)置編碼,一般都是gbk模式
$data->read('Book1.xls');//文件路徑
error_reporting(E_ALL ^ E_NOTICE);
//這里我就只循環(huán)輸出excel文件的內(nèi)容了,要入庫(kù),只要把輸出的地方,寫(xiě)一段mysql語(yǔ)句即可~
for ($i = 1; $i <= $data->sheets[0]['numRows']; $i++) {
for ($j = 1; $j <= $data->sheets[0]['numCols']; $j++) {
echo """.$data->sheets[0]['cells'][$i][$j]."",";
}
echo "";
}
?>
注意:請(qǐng)不要使用PHP-ExcelReader壓縮包里面的xls進(jìn)行測(cè)試,斷橋殘雪發(fā)現(xiàn),那個(gè)文件既是使用excel也打不開(kāi),所以是錯(cuò)誤的。
斷橋殘雪使用上面的方法解析了一個(gè)1.4M的數(shù)據(jù),都顯示正常,所以大家可以放心使用
原文:http://www.js8.in/618.html