excel文件内容导入数据库是非常常见的功能。在前段时间刚刚接触到它。这里简单说一下自己的理解。

第一步:PHPExcel类文件,引入到项目类库里。具体下载地址百度搜索即可。

第二步:在前端页面上传所需导入的excel文件。

文件上传方法代码如下:
public function fileupload()
{//判断文件类型以及限制大小
    if (($_FILES["file"]["type"] == "application/vnd.ms-excel"|| $_FILES["file"]["type"]=="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet") && $_FILES["file"]["size"] < 2000000)
    {
        if ($_FILES["file"]["error"] > 0)
        {
            $this->error= $_FILES["file"]["error"];
        }
        else
        {
            $directory = rtrim(DIR_IMAGE . $this->path);//文件路径 
            if (!is_dir($directory)) {//判断路径是否存在
                mkdir($directory, 0777);
            } 
            move_uploaded_file($_FILES["file"]["tmp_name"],
            $directory . $_FILES["file"]["name"]);
            $this->filename=$_FILES["file"]["name"];//保存文件名 
        }
    }
    else
    {
        $this->error="文件类型或大小出错!";
    } 
    return $this->error? false:true;
}

第三步:将文件内容读入到一个数组中。

public function read($filename,$encode='utf-8'){
    $excelData = array();
    $objReader = new PHPExcel_Reader_Excel2007();
    if(!$objReader->canRead($filename)){//如果文件不是.xlsx或.xls则返回空
        $objReader = new PHPExcel_Reader_Excel5();
        if (!$objReader->canRead($filename)){
            $this->error="excel文件错误!";
            return '';
        }
    }
    $objPHPExcel = $objReader->load($filename);
    $objWorksheet = $objPHPExcel->getActiveSheet();
    $highestRow = $objWorksheet->getHighestRow();//行
    $highestColumn = $objWorksheet->getHighestColumn();//列
    $highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn);//字符列表转换为数字列表
    for ($row = 1; $row <= $highestRow; $row++) {
         for ($col = 0; $col < $highestColumnIndex; $col++) {
             $cell = (string)$objWorksheet->getCellByColumnAndRow($col, $row)->getValue();//读取单元格数据
             
             $excelData[$row][$col] = $cell;
        }
    }
    return $excelData;
}

第四步:对读取到的数组进行处理,插入数据库中。每个项目处理方法都不同这里就不附上代码了。


相关评论(0)
您是不是忘了说点什么?

友情提示:垃圾评论一律封号...

还没有评论,快来抢沙发吧!