最近因項(xiàng)目需求,要實(shí)現(xiàn)將excel文件通過php頁(yè)面導(dǎo)入mysql數(shù)據(jù)庫(kù)中。在網(wǎng)上搜了很多這方面的資料,發(fā)現(xiàn)都是將excel文件另存為csv文件,然后從csv文件導(dǎo)入。這里介紹一個(gè)直接將excel文件導(dǎo)入mysql的例子。我花了一晚上的時(shí)間測(cè)試,無論導(dǎo)入簡(jiǎn)繁體都不會(huì)出現(xiàn)亂碼,非常好用。
說明:
測(cè)試環(huán)境:MYSQL數(shù)據(jù)庫(kù)采用utf8編碼.導(dǎo)入EXCEL文檔是xls格式,經(jīng)過測(cè)試,xlsx 格式[excel 2007]也OK.
文中紅色標(biāo)注為需要注意的地方,請(qǐng)?zhí)鎿Q成你配置好的數(shù)據(jù),如數(shù)據(jù)庫(kù)配置等。運(yùn)行實(shí)現(xiàn)導(dǎo)入。
以下是我貼出的詳細(xì)代碼,其中test.php為我寫的測(cè)試文件,reader.php和oleread.inc文件是從上面提供的網(wǎng)址中下載的。
1. test.php
以下為引用的內(nèi)容:
require_once 'reader.php';
// ExcelFile($filename, $encoding);
$data = new Spreadsheet_Excel_Reader();
// Set output Encoding.
$data->setOutputEncoding('gbk');
//”data.xls”是指要導(dǎo)入到mysql中的excel文件
$data->read('data.xls');
@ $db = mysql_connect('localhost', 'root', '123456') or
die("Could not connect to database.");//連接數(shù)據(jù)庫(kù)
mysql_query("set names 'gbk'");//輸出中文
mysql_select_db('mydb'); //選擇數(shù)據(jù)庫(kù)
error_reporting(E_ALL ^ E_NOTICE);
for ($i = 1; $i <= $data->sheets[0]['numRows']; $i++) {
//以下注釋的for循環(huán)打印excel表數(shù)據(jù)
/*
for ($j = 1; $j <= $data->sheets[0]['numCols']; $j++) {
echo """.$data->sheets[0]['cells'][$i][$j]."",";
}
echo "n";
*/
//以下代碼是將excel表數(shù)據(jù)【3個(gè)字段】插入到mysql中,根據(jù)你的excel表字段的多少,改寫以下代碼吧!
$sql = "INSERT INTO test VALUES('".
$data->sheets[0]['cells'][$i][1]."','".
$data->sheets[0]['cells'][$i][2]."','".
$data->sheets[0]['cells'][$i][3]."')";
echo $sql.'
';
$res = mysql_query($sql);
}
?>
更多信息請(qǐng)查看IT技術(shù)專欄