PHP利用PHPExcel插件读取Excel文件内容

下载PHPExcel插件


/**
 * 把Excel内容转化成数组
 * @param   string     $file_path 文件地址
 * @param   integer    $sheet     工作表
 * @author liuyupeng [[email protected]]
 * @version 2017-04-19T19:01:22+0800
 */
function excelToArray($file_path, $sheet = 0){
    // 引入phpexcel类(thinkPHP方式,其它框架请自行修改)
    Vendor("PHPExcel.Classes.PHPExcel.php");
    Vendor("PHPExcel.Classes.PHPExcel.IOFactory");
    
    $r = ["status" => 1, "info" => "文件检测成功"];
    if(empty($file_path) || !file_exists($file_path)){
        $r = ["status" => 0, "info" => "Excel 读取错误"];
    }

    if($r["status"]){
        $PHPReader = new \PHPExcel_Reader_Excel2007();        // 建立reader对象
        
        if(!$PHPReader->canRead($file_path)){
            $PHPReader = new \PHPExcel_Reader_Excel5();
            if(!$PHPReader->canRead($file_path)){
                $r = ["status" => 0, "info" => "Excel 读取错误"];
            }
        }
    }

    if($r["status"]){
        $PHPExcel = $PHPReader->load($file_path);           // 建立excel对象
        $currentSheet = $PHPExcel->getSheet($sheet);        // 读取excel文件中的指定工作表

        $allColumn = $currentSheet->getHighestColumn();       // 取得最大的列号
        $allRow = $currentSheet->getHighestRow();             // 取得一共有多少行

        $dataExcel = array();
        // 循环读取每个单元格的内容。注意行从1开始,列从A开始
        for($rowIndex = 1; $rowIndex <= $allRow; $rowIndex ++){        
            for($colIndex = "A"; $colIndex <= $allColumn; $colIndex ++){
                $location = $colIndex.$rowIndex;

                $cell = $currentSheet->getCell($location)->getValue();
                
                if($cell instanceof PHPExcel_RichText){ // 富文本转换字符串
                    $cell = $cell->__toString();
                }
                
                $dataExcel[$rowIndex][$colIndex] = $cell;
            }
        }

        $r = ["status" => 1, "info" => "文件内容获取成功"];
        $r["data"] = $dataExcel;
        $r["allRow"] = $allRow;
        $r["allColumn"] = $allColumn;
    }

    return $r;
}

你可能感兴趣的:(PHP利用PHPExcel插件读取Excel文件内容)