欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

PHPExcel 导入Excel数据 (导出下一篇我们继续讲解)

程序员文章站 2022-06-24 09:38:08
一:使用composer下载 phpoffice/phpexcel 或者直接下载安装包 二 1:导入数据 原理:读取文件,获取文件的最大行,最大列。然后组装数据,导入数据库。 注意:如果你的Excel文件是加密的话是读取不了的,我真的在这上面浪费了很多时间,如果有谁知道如何解决,麻烦告知一二谢谢。 ......

 

一:使用composer下载 phpexcel 或者直接下载安装包

composer require phpoffice/phpexcel

 

1:导入数据

原理:读取文件,获取文件的最大行,最大列。然后组装数据,导入数据库。

注意:如果你的Excel文件是加密的话是读取不了的,我真的在这上面浪费了很多时间,如果有谁知道如何解决,麻烦告知一二谢谢。

我们来看看如何具体实现

PHPExcel 导入Excel数据 (导出下一篇我们继续讲解)

实现方法

  public static function importExcel($file = '', $sheet = 0)
    {
        $file = iconv("utf-8", "gb2312", $file);   //转码
        if (empty($file) OR !file_exists($file)) {
            die('file not exists!');
        }

        $objRead = new PHPExcel_Reader_Excel2007();   //建立reader对象
        if (!$objRead->canRead($file)) {
            $objRead = new PHPExcel_Reader_Excel5();
            if (!$objRead->canRead($file)) {
                die('No Excel!');
            }
        }

        $cellName = ['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', 'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'AG', 'AH', 'AI',
            'AJ', 'AK', 'AL', 'AM', 'AN', 'AO', 'AP', 'AQ', 'AR', 'AS', 'AT', 'AU', 'AV', 'AW', 'AX', 'AY', 'AZ'];

        $obj = $objRead->load($file);  //建立excel对象
        $currSheet = $obj->getSheet($sheet);   //获取指定的sheet表
        $columnH = $currSheet->getHighestColumn();   //取得最大的列号
        $columnCnt = array_search($columnH, $cellName);
        $rowCnt = $currSheet->getHighestRow();   //获取总行数

        $data = [];
        for ($_row = 1; $_row <= $rowCnt; $_row++) {  //读取内容
            for ($_column = 0; $_column <= $columnCnt; $_column++) {
                $cellId = $cellName[$_column] . $_row;
                $cellValue = $currSheet->getCell($cellId)->getValue();
                $data[$_row][$_column] = $cellValue;
            }
        }

        $return_data = [];
        foreach ($data as $k => $v) {
            if ($k > 1) {
                $test = array_combine($data[1], $data[$k]);
                array_push($return_data, $test);
            }
        }
        return $return_data;
    }

//精简版

 public static function importExcel($file = '', $sheet = 0)
    {
        $file = iconv("utf-8", "gb2312", $file);   //转码
        if (empty($file) OR !file_exists($file)) {
            die('file not exists!');
        }

        $objRead = new PHPExcel_Reader_Excel2007();   //建立reader对象
        if (!$objRead->canRead($file)) {
            $objRead = new PHPExcel_Reader_Excel5();
            if (!$objRead->canRead($file)) {
                die('No Excel!');
            }
        }
 
        $obj = $objRead->load($file);  //建立excel对象
        $data =$obj->getSheet($sheet)->toArray();//获取为数组

        $return_data = [];
        foreach ($data as $k => $v) {
            if ($k > 0) {
                $test = array_combine($data[0], $data[$k]);
                array_push($return_data, $test);
            }
        } 
        return $return_data;
    }

 

 

 

 

PHPExcel 导入Excel数据 (导出下一篇我们继续讲解)

注意如果文件过大,PHP读取会过长,我们可以设置。

 set_time_limit(0);//0代表永久