PHP Excel文件導入數據到數據庫


1.php部分(本例thinkphp5.1):

  下載PHPExcel了擴展http://phpexcel.codeplex.com/

<?php
namespace app\admin\controller;

// 引入phpExcel
use Env;
use vendor\PHPExcel\PHPExcel;

class Upload
{
//上傳Excel 導入數據
public function import(){
include_once(Env::get('root_path').'vendor/PHPExcel/PHPExcel.php');
// $objPHPExcel = new \PHPExcel();
$file = request()->file('file');
$info = $file->validate(['size'=>52428800])->move( '../public/uploads');
if($info){
$ext = $info->getExtension(); //獲取文件后綴名
if(!in_array($ext,['xlsx','xls'])){
$msg=['code'=>-1,'msg'=>"文件格式有誤"];
}else{
$path = $_SERVER['DOCUMENT_ROOT'].'/uploads/'.str_replace('\\', '/', $info->getSaveName()); //上傳文件路徑
if (!file_exists($path)) {
$msg['res'] = -1;
$msg['msg'] = "上傳文件丟失!" . $file->getError();
}

if ($ext == 'xlsx') {
$objReader = \PHPExcel_IOFactory::createReader('Excel2007');
$objPHPExcel = $objReader->load($path, 'utf-8');
} elseif ($ext == 'xls') {
$objReader = \PHPExcel_IOFactory::createReader('Excel5');
$objPHPExcel = $objReader->load($path, 'utf-8');
}

$sheet = $objPHPExcel->getSheet(0);
$highestRow = $sheet->getHighestRow(); // 取得總行數
// $highestColumn = $sheet->getHighestColumn(); // 取得總列數
$i = 0;
$importRows = 0;
$addData = [];
for ($j = 2; $j <= $highestRow; $j++) {
$importRows++;
$realName = (string)$objPHPExcel->getActiveSheet()->getCell("A$j")->getValue();//需要導入的realName
$phone = (string)$objPHPExcel->getActiveSheet()->getCell("B$j")->getValue(); //需要導入的phone
$company = (string)$objPHPExcel->getActiveSheet()->getCell("C$j")->getValue(); //需要導入的company
$job = (string)$objPHPExcel->getActiveSheet()->getCell("D$j")->getValue(); //需要導入的job
$email = (string)$objPHPExcel->getActiveSheet()->getCell("E$j")->getValue(); //需要導入的email

$addData[] = ['name'=>$realName,'tel'=>$phone,'company'=>$company,'job'=>$job,'email'=>$email];
$i++;
}
halt($addData); //打印數據
//數據寫入數據庫
$result = model('')->insertAll($addData);
if($result){
$msg = ['code'=>0,'msg'=>'導入數據成功!'];
}else{
$msg = ['code'=>-1,'msg'=>'導入失敗,請重試!'];
}
}
}
return $msg;
}
}
 配置路由:
'import'=>'admin/Upload/import',  
2.前端部分:layui傳文件
<a class="layui-btn layui-btn-primary import_btn" data-type="import">導入數據</a>   //點擊開始上傳文件操作
layui.use(['upload'],function(){
  var upload = layui.upload;
  upload.render({
    elem:'.import_btn',
    url:"{:url('admin/import')}",
    accept:'file', //普通文件
    exts:'xls', //允許的文件后綴
    done:function(res){
      //執行導入接口后操作
    }
  });
})

參考鏈接:https://www.cnblogs.com/52lnamp/p/9237704.html,https://blog.csdn.net/xgs736214763/article/details/78904780(感謝分享)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM