php excel文件查找某一列的数据 兼容xls、xlsx、csv excel文件导入

童鞋要将客户excel表导入,然后按照电话群发短信,就整了这货……(o^^o)

<?php

namespace app\index\controller;

use \think\Controller;

use PHPExcel_IOFactory;
use PHPExcel;

class Index extends Controller
{
    static private $keyWords = '电话';
    static private $row = 3; // 最大行数  免的蛋疼货压根没标题
    public function open()
    {
        //获取文件所在目录名
        $path = 'public/uploads/excel/20181219/1.xls';
        // 兼容多个文件
        $file_type = pathinfo($path, PATHINFO_EXTENSION);
        switch ($file_type) {
            case 'xls':
                $objReader = PHPExcel_IOFactory::createReader('Excel5');
                break;
            case 'xlsx':
                $objReader = PHPExcel_IOFactory::createReader('Excel2007');
                break;
            case 'csv':
                $objReader = PHPExcel_IOFactory::createReader('CSV');
                break;
            default:
                die('文件类型错误'); // 报错信息
                break;
        }
        //加载文件  'utf-8'可加可不加 目前没有发现去除会出现问题
        $PHPExcel = $objReader->load($path, 'utf-8');
        // 转换为数组
        $excel_array = $PHPExcel->getsheet(0)->toArray();
        $row_num = 0;
        // 寻找关键词标题
        do {
            $row = $excel_array[$row_num];
            $title_key = array_search(self::$keyWords, $row,true);
            ++$row_num;
        } while ($title_key === false && $row_num <= self::$row);
        --$row_num;
        if ($title_key === false) {
            die('超过最大行数,依然没有关键词标题');
        }
        $arr = [];
        foreach ($excel_array as $k => $v) {
            if ($k > $row_num) {
                $arr[] = $v[$title_key];
            }
        }
        var_dump($arr);
    }
}

猜你喜欢

转载自blog.csdn.net/sym134/article/details/85108409