php 解析excel 表格的数据方法

1、获取本地某个excel 的数据,如表格

2、做成动态的数据,如按照一定的表格样式构建数据,然后上传,获取文件地址,开始解析excel,获取数据

以上两个方法都可以用如下方法,便可以解析出excel 里面的数据

  public function handle_data(){
/*读取excel文件,并进行相应处理*/
        //s$fileName = "F:/handle_data/data.xlsx"; 这是第一个方法,直接获取文件excel的地址
        //$fileName = "F:/handle_data/test.xlsx";
        error_reporting(E_ALL);
        ini_set('display_errors', TRUE);
        ini_set('display_startup_errors', TRUE);

        $info = array('status' => 'fail', 'msg' => '上传失败!');
        $file = $_FILES['upfile'];这是第二个方法,上传本地文件excel,到下面去获取excel地址
        if ($file['error'] == 4) {
            $info['msg'] = '请选择文件后再上传!';
        } else if ($file['error'] == 1) {
            $info['msg'] = '文件超出了php.ini文件指定大小!';
        } else if ($file['size'] > 0) {
            $key = md5_file($file['tmp_name']);
            $upfile_path = Tiny::getPath("uploads") . '/excel/';
            $upfile_url = preg_replace("|^" . APP_URL . "|", '', Tiny::getPath("uploads_url"));
            $upfile = new UploadFile('upfile', $upfile_path, '10m', 'xls,xlsx,csv', 'hash', $key);
            $upfile->save();
            $info = $upfile->getInfo();
            //上传成功之后的路径
            $fileName = './data/uploads/excel/' . $info[0]['path'];
            //$fileName = Req::args('upfile');
            if (!file_exists($fileName)) {
                exit("文件" . $fileName . "不存在");
            }
            //$startTime = time(); //返回当前时间的Unix 时间戳
            require_once './protected/classes/PHPExcel/IOFactory.php';//引入PHPExcel类库
            $objPHPExcel = PHPExcel_IOFactory::load($fileName);//获取sheet表格数目
            // 获得sheet1
            $sheet = $objPHPExcel->getActiveSheet(0);
            // 当前sheet的最大行数
            $highestRow = $sheet->getHighestRow();
            // 获取Excel数据
            $arr = $sheet->toArray();

            // 解析
            $data = [];
            $length = count($arr);
            for ($i = 1; $i < $length; $i++) {
                // 为什么i从1开始?因为i=0是列标题!
                $data[$i - 1] = [
                    'order_no' => $arr[$i][0],
                    'pay_time' => $arr[$i][1],
                    'nick_name' => $arr[$i][2],
                    'mobile' => $arr[$i][3],
                    'card_name' => $arr[$i][4],
                    'all_nums' => $arr[$i][5],
                    'no_nums' => $arr[$i][6],
                    'all_money' => $arr[$i][7],
                    'end_time' => $arr[$i][8],
                    'refund_money' => $arr[$i][9],
                    'ali_pay' => $arr[$i][10],
                    'real_name' => $arr[$i][11],
                ];
            }
}
}

var_dump($data);

 这两种方法的前提是需要下载一个phpEXCEl的包到项目中去才可以,两种方法需要自己稍微整理测试。

打印便得一个二维数组的数据