PHP Excel是一個強大的PHP開源庫,用于在PHP應用程序中創建、讀取和修改Microsoft Office Excel電子表格。在Web開發中,Excel表格經常被用于數據導出和導入,特別是在管理系統和電子商務平臺上使用最廣泛。本文將詳細介紹PHP Excel的使用,以及如何通過PHP實現Excel文件的上傳。
上傳Excel文件通常是實現數據導入的第一步。PHP中通過$_FILES[]變量來實現文件上傳操作,其中包含了上傳文件的類型、名稱、大小以及臨時存儲路徑等信息。我們可以通過檢查$_FILES[]中的type來判斷上傳文件的類型是否為Excel文件。
if ($_FILES["file"]["type"] != "application/vnd.ms-excel") { echo "只允許上傳Excel文件"; exit; }
一旦確認上傳文件是Excel文件后,我們就可以通過PHPExcel庫來讀取上傳的文件內容,目前PHPExcel已經被其官方項目PHPExcel團隊棄用,推薦使用PHPSpreadsheet。PHPSpreadsheet是PHPExcel的續作,保持著PHPExcel的全部特性,并將開源庫從PHPExcel團隊轉移到了官方的社區phpoffice。
require 'vendor/autoload.php'; use PhpOffice\PhpSpreadsheet\IOFactory; $file = $_FILES['file']['tmp_name']; $reader = IOFactory::createReader('Xlsx'); $reader->setReadDataOnly(true); $spreadsheet = $reader->load($file); $worksheet = $spreadsheet->getActiveSheet(); $highestRow = $worksheet->getHighestRow(); for ($row = 1; $row<= $highestRow; ++$row) { $data = $worksheet->getCellByColumnAndRow(1, $row)->getValue(); echo $data . "
"; }
通過上述代碼,我們可以實現對Excel文件的讀取操作??梢钥吹?,我們首先需要使用Composer來引入PHPSpreadsheet庫,然后通過IOFactory類的createReader函數來創建一個Excel讀取器。由于我們只需要讀取Excel中的數據,而不需要讀取格式,因此可以使用setReadDataOnly函數來設置只讀取數據。通過load函數來將上傳的Excel文件加載到內存中,同時獲取工作表,并得到工作表中最高行的序號。之后通過循環讀取工作表中的數據,并將每個單元格賦值給變量$data,最后通過echo函數輸出$data。
在實際項目開發中,通常需要將上傳的Excel數據寫入到數據庫中。我們可以通過MySQL數據庫和PDO類來實現數據的寫入操作,以下是樣例代碼:
require 'vendor/autoload.php'; use PhpOffice\PhpSpreadsheet\IOFactory; // 連接數據庫 $dbh = new PDO('mysql:host=localhost;dbname=test', 'root', 'password'); $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $file = $_FILES['file']['tmp_name']; $reader = IOFactory::createReader('Xlsx'); $reader->setReadDataOnly(true); $spreadsheet = $reader->load($file); $worksheet = $spreadsheet->getActiveSheet(); $highestRow = $worksheet->getHighestRow(); for ($row = 2; $row<= $highestRow; ++$row) { $name = $worksheet->getCellByColumnAndRow(1, $row)->getValue(); $sex = $worksheet->getCellByColumnAndRow(2, $row)->getValue(); $age = $worksheet->getCellByColumnAndRow(3, $row)->getValue(); $sql = "INSERT INTO `user` (`name`, `sex`, `age`) VALUES (?, ?, ?)"; $stmt = $dbh->prepare($sql); $stmt->execute([$name, $sex, $age]); }
通過以上代碼,我們可以在工作表的第一行寫上標題,然后在第二行開始插入數據到數據庫中??梢钥吹皆诖a中我們通過PDO庫來連接MySQL數據庫,之后建立一個INSERT SQL語句,通過prepare函數創建一個PDOStatement對象,執行execute()函數,將Excel表格中一行數據插入到user數據表中。
總之,PHP Excel是實現Excel文件上傳和數據導入的重要工具,可以幫助我們快速實現Excel數據的讀取、寫入以及導入操作。通過學習PHP Excel的使用,我們可以在Web開發中更加靈活高效地操作Excel文件。