1、首先接收前端發來的excel //接收前台文件
public function addExcel()
{
//接收前台文件
$ex = $_FILES['file'];
//重設置文件名
$filename = time() . substr($ex['name'], stripos($ex['name'], '.'));
$path = 'excel/' . $filename;//設置移動路徑
move_uploaded_file($ex['tmp_name'], $path);
//表用函數方法 返回數組
$exfn = $this->_readExcel($path); // 讀取內容
$this->upload_file($exfn, $path); // 上傳數據
}
2、接收到文件之後讀取excel文件內容 //創建一個讀取excel數據,可用於入庫
public function _readExcel($path)
{
//引用PHPexcel 類
include_once('util/PHPExcel.php');
include_once('util/PHPExcel/IOFactory.php');//靜態類
$type = 'Excel2007';//設置為Excel5代表支持2003或以下版本,Excel2007代表2007版
$xlsReader = PHPExcel_IOFactory::createReader($type);
$xlsReader->setReadDataOnly(true);
$xlsReader->setLoadSheetsOnly(true);
$Sheets = $xlsReader->load($path);
//開始讀取上傳到服務器中的Excel文件,返回一個二維數組
$dataArray = $Sheets->getSheet(0)->toArray();
return $dataArray;
}
3、將讀取的數據上傳到數據庫 //將數據導入數據庫
private function upload_file($data, $path)
{
global $db;
$arr = array();
array_push($arr, $data[0]);
//刪除第一項
unset($data[0]);
$sql = 'insert into media_platform (user,phone,passwd,head,nickname,platform) values (?,?,?,?,?,?)';
$stmt = $db->prepare($sql);
foreach ($data as $v) {
$result = $stmt->execute(array($v[0] ? $v[0] : '', $v[1] ? $v[1] : '', $v[2] ? $v[2] : '', $v[3] ? $v[3] : '', $v[4] ? $v[4] : '', $v[6] ? $v[6] : ''));
// $stmts->execute(array($v[6] ? $v[6] : ''));
if (!$result) {
array_push($arr, $v);
}
}
echo json_encode($arr);
unlink($path); // 上傳完文件之後刪除文件,避免造成垃圾文件的堆積
}
筆者使用的是 mysql之PDO
注意:文件夾格式
PhpExcel下載地址: https://github.com/PHPOffice/PHPExcel/tree/1.8/Classes