php导入Excel表格接口

首先下载:PHPExcel.php
https://codeload.github.com/PHPOffice/PHPExcel/zip/1.8

<?php

namespace app\api\controller;

use app\common\controller\Api;

use think\Db;


/*导入接口*/
class Import extends Api
{
    public function index(){
        /*引入PHPExcel插件*/
        require_once(VENDOR_PATH .'/phpExcel/PHPExcel-1.8/PHPExcel-1.8/Classes/PHPExcel.php');
          
        /**加载excel文件*/
        $file_name = request()->file('file');
        
        if(empty($file_name)){
            $this->error('请求失败,未识别到文件');
        }
        $info = $file_name->validate(['size'=>1567800,'ext'=>'xlsx,xls,csv'])->move(ROOT_PATH . 'public' . DS . 'excel');
    	$exclePath = $info->getSaveName();  //获取文件名  
        $filename = ROOT_PATH . 'public' . DS . 'excel' . DS . $exclePath;   /**上传文件的地址*/  
        $objPHPExcel = \PHPExcel_IOFactory::load($filename,$encode='utf-8');    
        
        $sheet = $objPHPExcel->getSheet(0);
        $highestRow = $sheet->getHighestRow(); /**取得总行数*/
        $highestColumn = $sheet->getHighestColumn(); /**取得总列数*/
    
        $arr = array('A','B','C','D','E','F','G','H','I','J','K','L','M', 'N','O','P','Q','R','S','T','U','V','W','X','Y','Z'); 
         /**一次读取一列*/  
        $res_arr = array();  
        for ($row = 2; $row <= $highestRow; $row++) {  
            $row_arr = array();
            for ($column = 0; $arr[$column] != 'H'; $column++) {  
                $val = $sheet->getCellByColumnAndRow($column, $row)->getValue();  
                $row_arr[] = $val;  
            }  
              
            $res_arr[] = $row_arr;
        } 
      
        foreach($res_arr as $k=>$v) {
           
            // $data[$k]['birthday'] = date('Y-m-d',strtotime(strlen($v[3])==15 ?('19'. substr($v[3],6,6)):substr($v[3],6,8)));  /**生日*/
            // $data[$k]['birthday'] = trim($v[1]);
			$data[$k]['address'] = trim($v[1]);   /**籍贯*/
			$data[$k]['record'] = trim($v[2]);    /**学历*/
			$data[$k]['gradeid'] = trim($v[3]);   /**岗位档级*/
			$data[$k]['base_pay'] = trim($v[4]);  /**档级工资*/
			$data[$k]['name'] = trim($v[5]);      /**名称*/
			$data[$k]['tel'] = trim($v[6]);       /**手机号*/
// 			if(!empty($money)){
//     			$data[$k]['gradeid'] = $v[6];     /**岗位档级*/
// 	    		$data[$k]['base_pay'] = $money;   /**岗位档级*/
// 			}
    
        }
        /**开启事务*/
        Db::startTrans();
        $catch = [];
        $ok = 0;
        $error = 0;
        foreach ($data as $key=>$value){
            try {
                $success = db('staffs')->insert($value); /**插入数据*/
                if (!empty($success)) {
                    Db::commit();
                    $ok++;
                }else{
                    $error++;
                    $catch[] = ['name'=>$value['name'],'tel'=>$value['tel']];
                }
            } catch (\Exception $e) {
                $catch[] = ['name'=>$value['name'],'tel'=>$value['tel']];
                Db::rollback();
                $error++;
            }
        }
 
        
        $total = count($res_arr);
        
        $this->success("总{$total}条,成功{$ok}条,失败{$error}条。",$catch);
    }
}

猜你喜欢

转载自blog.csdn.net/m0_64590669/article/details/131280226
今日推荐