首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

PHP 實現 Excel 直接匯入 MySQL:PHP-ExcelReader 庫完整實作碼 (支援 UTF-8/GBK、xls/xlsx)

     編輯:MySQL 綜合教學

工具選擇

PHP-ExcelReader:https://sourceforge.net/projects/phpexcelreader
無需另存 CSV,直接讀取 .xls (Excel 97-2003) 與 .xlsx (Excel 2007+)。

環境需求

  • MySQL 資料庫編碼:UTF-8
  • PHP 擴展:無額外需求 (純 PHP 實作)

核心程式碼 (test.php)

<?php
require_once 'reader.php';

$data = new Spreadsheet_Excel_Reader();
$data->setOutputEncoding('gbk');  // 輸出編碼,配合資料庫/頁面

// 讀取 Excel 檔
$data->read('data.xls');

@ $db = mysql_connect('localhost', 'root', '123456') or die("Could not connect to database.");
mysql_query("SET NAMES 'gbk'");  // 連線字元集
mysql_select_db('mydb');

error_reporting(E_ALL ^ E_NOTICE);

for ($i = 1; $i <= $data->sheets[0]['numRows']; $i++) {
  // 三欄位範例,依實際 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 . '<br />';
  $res = mysql_query($sql);
}
?>

關鍵點說明

  • setOutputEncoding('gbk'):PHP-ExcelReader 內部轉碼,配合 SET NAMES gbk 避免中文亂碼
  • 若資料庫/頁面為 UTF-8,改為 setOutputEncoding('utf-8') + SET NAMES utf8
  • $data->sheets[0]['cells'][$i][$j]:$i 列 (從 1 開始),$j 欄 (從 1 開始)
  • 迴圈從 1 開始跳過標題列;若無標題列改從 0 開始

測試結果

經過一晚測試,**簡繁體中文皆無亂碼**,xls/xlsx 格式相容良好。

擴充建議

  • 加入交易控制 (BEGIN/COMMIT/ROLLBACK) 確保資料一致性
  • 欄位型別驗證與轉換 (日期、數值)
  • 大量資料分批次 Commit 避免記憶體耗盡
  • 現代專案建議改用 PhpSpreadsheet (PHP-ExcelReader 繼任者,支援更多格式、效能更好)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved