1. 程式人生 > >php excel檔案查詢某一列的資料 相容xls、xlsx、csv excel檔案匯入

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);
    }
}