1、首先安裝composer ,然後用composer安裝phpexcel
其次 cmd切換到項目根目錄 運行命令:composer require phpoffice/phpexcel
注意:
1.運行可能會報錯OpenSSL之類的 去php.ini中開啓extension=php_openssl.dll擴展,去掉分號
2.還有可能出現 找不到匹配的包的錯誤,這是因爲我本地用的phpstudy的nts版本,這個版本比較特殊同時支持apache和nginx,只是本地虛擬環境開發測試用的PHP版本,所以匹配不到,應該切換正常版本在運行命令安裝
上面的問題我還是沒有遇到的。
2、前端代碼
<div class="layui-form-item" >
<label class="layui-form-label">導入專線</label>
<div class="layui-input-inline">
<div class="layui-upload">
<button type="button" name="myfile" class="layui-btn" id="myfile"><i class="layui-icon"></i>上傳文件</button>
</div>
</div>
</div>
<script type="text/javascript">
layui.use(['form','upload'],function(){
var form=layui.form;
var upload=layui.upload;
upload.render({ //允許上傳的文件後綴
elem: '#myfile'
,url: "{:url('Logisticscompany/inserline')}"
,accept: 'file' //普通文件
,exts: 'xls|excel|xlsx' //只允許上傳壓縮文件
,done: function(res){
if(res.code==1){
layer.msg('上傳成功,已解析數據',{icon:6});
location.href="{:url('Logisticscompany/lists')}";
}else{
layer.msg('解析失敗',{icon:5});
}
}
});
form.on('submit(formsub)',function(data){
layer.msg('導入數據具體詳情未協商確認,待確認後處理');
return false;
})
})
</script>
3、controller代碼,方法前面直接use就可以
use PHPExcel;
/**
* excel導入網點
*/
public function insert(){
if(request() -> isPost())
{
$objPHPExcel =new \PHPExcel();
//獲取表單上傳文件
$file = request()->file('file');
$info = $file->validate(['ext' => 'xlsx,xls'])->move(ROOT_PATH . 'public'); //上傳驗證後綴名,以及上傳之後移動的地址 E:\wamp\www\bick\public
if($info)
{
$exclePath = $info->getSaveName(); //獲取文件名
$file_name = ROOT_PATH . 'public' . DS . $exclePath;//上傳文件的地址
$file_types = explode ( ".", $_FILES ['file'] ['name'] );
$file_type = $file_types [count ( $file_types ) - 1];
if($file_type=='xls'){
$objReader =\PHPExcel_IOFactory::createReader("Excel5");
}
else if($file_type=='xlsx'){
$objReader =\PHPExcel_IOFactory::createReader("Excel2007");
}
$obj_PHPExcel =$objReader->load($file_name, $encode = 'utf-8'); //加載文件內容,編碼utf-8
$excel_array=$obj_PHPExcel->getSheet(0)->toArray(); //轉換爲數組格式
array_shift($excel_array); //刪除第一個數組(標題);
$data = [];
$i=0;
foreach($excel_array as $k=>$v) {
$data[$k]['viewName'] = $v[0];
$data[$k]['cityId'] = $v[1];
$data[$k]['stationAddress'] = $v[2];
$data[$k]['linkMan'] = $v[3];
$data[$k]['linkPhone'] = $v[4];
$data[$k]['longitude'] = $v[5];
$data[$k]['latitude'] = $v[6];
$data[$k]['userId'] = $v[7];
$data[$k]['remark'] = $v[8];
$i++;
}
$re= Db::name("parking")->insertAll($data);
if($re){
$msg=[
'code'=>1,
'msg'=>'已獲取信息',
];
return json_encode($msg);
}
else{
$msg=[
'code'=>0,
'msg'=>'獲取信息失敗',
];
return json_encode($msg);
}
}else
{
echo $file->getError();
}
}
}