tp3.2.excelデータ関数パッケージを読み込み、wpsでコンテンツが読み取れない場合や、excelでZ列より大きい場合(AA,AB列)、データが読み取れない場合の問題を解決する

2352 ワード

この関数はtp 3にある.2で直接使用できます.
    public function readExcel($file)
    {
        header("Content-Type:text/html; charset=utf-8");
        if ( !file_exists($file) ) {
            $this->ajaxReturn([
                'code' => 500,
                'msg'  => 'Excel     '
            ]);
        }
        $info = pathinfo($file);
        import('Vendor.Classes.PHPExcel');
        if ( $info['extension'] == 'xls' ) {
            import("Vendor.Classes.PHPExcel.Reader.Excel5");
            $PHPReader = new \PHPExcel_Reader_Excel5();
        } else if ( $info['extension'] == 'xlsx' ) {
            import("Vendor.Classes.PHPExcel.Reader.Excel2007");
            $PHPReader = new \PHPExcel_Reader_Excel2007();
        } else {
            $this->ajaxReturn([
                'code' => 500,
                'msg'  => '        ,   xls,xlsx  '
            ]);
        }
        //    arr    excel   
        $arr = array();
        //  excel
        $PHPReader->setReadDataOnly(true); //         
        $PHPExcel = $PHPReader->load($file);
        //$PHPExcel = $PHPReader->load($file);    //  wps        ,    load  
        //           ,        , 0  1,    
        $currentSheet = $PHPExcel->getSheet(0);
        //     
        $allColumn = $currentSheet->getHighestColumn();
        //   excel   Z  (AA,AB ),         
        $allColumn = \PHPExcel_Cell::columnIndexFromString($allColumn);
        //     
        $allRow = $currentSheet->getHighestRow();
        //         ,$currentRow     ,         ,    0  
        for ($currentRow = 2; $currentRow <= $allRow; $currentRow++) {
            //     ,A          0     
            for ($currentColumn = 0; $currentColumn <= $allColumn; $currentColumn++) {
                //    
                //$address = $currentColumn . $currentRow;
                //      ,     $arr 
                //$arr[$currentRow - 2][$currentColumn] = $currentSheet->getCell($address)->getValue();

                //   excel   Z  (AA,AB ),         
                $arr[$currentRow - 2][$currentColumn] = $currentSheet->getCellByColumnAndRow($currentColumn, $currentRow)->getValue();
            }
        }
        return $arr;
    }