EXCEL文件导入一件复制即可复用

第一步下载PHPExcel的SDK;链接地址:https://github.com/PHPOffice/PHPExcel

第二步解压下载的文件复制下图红色框的文件并改名为PHPEXcel

拾染博客

第三步(这里是TP3)放入\ThinkPHP\Library\Vendor

拾染博客

后面就是代码了

前端

!DOCTYPE html>
<html>
<head>
	<title></title>
	<meta charset="utf-8">
	<script src="https://code.jquery.com/jquery-3.0.0.min.js"></script>
</head>

<body>
	<form id="upload" enctype="multipart/form-data" method="post"> 
	 <input type="file" name="file"/> 
	 <input type="button" value="提交" onclick="uploadPic();"/> 
	 <span id="span"></span>
	</form> 
</body>
</html>
<script type="text/javascript">
	function uploadPic() { 
	  var form = document.getElementById('upload')
	  formData = new FormData(form); 

	  $.ajax({ 
	   url:"接口地址", 
	   type:"post", 
	   data:formData, 
	   processData:false, 
	   contentType:false, 
	   success:function(msg){ 
	    if(msg.status ==1){ 
	     	alert("上传成功"); 
	    } else{
	    	alert(msg.msg);
	    }
	   } 
	  }) 
 }
</script>

后台

<?php
	/**
	*字符串转ascii
	**/
    public function _ascii($data)
    {
    	
        $str = "";
        for($i = 0 ; $i<strlen($data) ; $i++)
        {
            $str .=ord($data[$i]);
        }
        return $str;
    }
    /**
     * 读取Excel内容
     * @param array $keyArray 单元格名称
     * @return array 返回信息
     */
    public function readExcel($fileName,$keyArray=array())
    {


        if (empty($fileName)) {
            return array('status' => 0, 'msg' => '文件不能为空');
        }

        import('Vendor.PHPExcel.PHPExcel.IOFactory', '', '.php');
        list(, $suffix) = explode('.', $fileName);
        if ($suffix == 'xlsx') {
            $reader = \PHPExcel_IOFactory::createReader('Excel2007');
        } elseif ($suffix == 'xls') {
            $reader = \PHPExcel_IOFactory::createReader('Excel5');
        } else {
            return array('status' => 0, 'msg' => '文件格式错误');
        }
        //先判断文件是否存在
        if (!file_exists($fileName)) {
            return array('status' => 0, 'msg' => '文件不存在');
        }
        $PHPExcel = $reader->load($fileName);
        if (empty($PHPExcel)) {
            return array('status' => 0, 'msg' => '文件无法加载');
        }
        $sheet = $PHPExcel->getSheet(0);
        $highestRow = $sheet->getHighestRow();
        $highestColumm = $sheet->getHighestColumn();
 
        //循环读取每个单元格的数据
        $data = array();
        for ($row = 1; $row <= $highestRow; $row++) {
            for ($column = 'A'; $this->_ascii($column) - $this->_ascii($highestColumm) <= 0; $column++) {
                $data[$row][$keyArray[$column] ? $keyArray[$column] : $column] = trim((string)$sheet->getCell($column . $row)->getValue());
                // 去除空数据
                if (empty(implode($data[$row]))) {
                    unset($data[$row]);
                }
            }
            
        }
        return array('status' => 1, 'data' => $data);
    }
    /**
    *获取文件内容
    **/
    public function qxl()
    {
        if(IS_POST){
            $key = array_keys($_FILES);
            $fileVale = $_FILES[$key[0]];

            $fileName = explode('.', $fileVale["tmp_name"])[0].substr($fileVale["name"], strrpos($fileVale["name"], "."));

            rename($fileVale["tmp_name"], $fileName);

            if(!file_exists($fileName)){
                $this->error("请选择要上传的文件");
                exit;
            }
            list(,$uffix) = explode('.', $fileName);
            if($uffix !="xlsx" && $uffix != "xls"){
                $this->error("文件类型错误");
                exit;
            }
            $keyArr = ["A"=>"name","B"=>"class","C"=>"achievement"];
            $data = $this->readExcel($fileName , $keyArr);
            if($data["status"] !=1){
            	$this->error($data["msg"]);
                exit;
            }
            dump($data["data"]);die;
        }
        $this->display();
    }

效果

拾染博客

拾染博客
请先登录后发表评论
  • 最新评论
  • 总共0条评论