PHP實現(xiàn)將EXCEL文件導入到MYSQL

字號:


    最近因項目需求,要實現(xiàn)將excel文件通過php頁面導入mysql數(shù)據(jù)庫中。在網(wǎng)上搜了很多這方面的資料,發(fā)現(xiàn)都是將excel文件另存為csv文件,然后從csv文件導入。這里介紹一個直接將excel文件導入mysql的例子。我花了一晚上的時間測試,無論導入簡繁體都不會出現(xiàn)亂碼,非常好用。
    說明:
    測試環(huán)境:MYSQL數(shù)據(jù)庫采用utf8編碼.導入EXCEL文檔是xls格式,經(jīng)過測試,xlsx 格式[excel 2007]也OK.
    文中紅色標注為需要注意的地方,請?zhí)鎿Q成你配置好的數(shù)據(jù),如數(shù)據(jù)庫配置等。運行實現(xiàn)導入。
    以下是我貼出的詳細代碼,其中test.php為我寫的測試文件,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”是指要導入到mysql中的excel文件
    $data->read('data.xls');
    @ $db = mysql_connect('localhost', 'root', '123456') or
    die("Could not connect to database.");//連接數(shù)據(jù)庫
    mysql_query("set names 'gbk'");//輸出中文
    mysql_select_db('mydb'); //選擇數(shù)據(jù)庫
    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個字段】插入到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);
    }
    ?>