php上传excle文件,csv文件解析为二维数组

解析上传的CSV文件不是什么难事,直接读取转成你想要的数组样子就OK了。

public function putStoreStockIn ($filePath = '') {
    $file = fopen($filePath,'r');  
    // 每次读取CSV里面的一行内容  
    while ($csvData = fgetcsv($file)) { 
        $newDatas[] = $csvData;  
    } 
    fclose($file); 
    // 处理数据,重组数组(按业务需要)
    foreach ($newDatas as $_key => $_value) {
        $returnData[$_key]['A'] = $_value[0];
        $returnData[$_key]['B'] = $_value[1];
        $returnData[$_key]['C'] = $_value[2];
        $returnData[$_key]['D'] = $_value[3];
    }
    return $returnData;
}

PHPExcel 上传excle文件,解析时,可能会出现返回数据不正确,或为NULL的情况,这时候可能要考虑你上传的excle版本了,不同的版本在PHPExcel中药用不同的方法来读取。还有可能,你的业务场景需要对解析后的数据值进行判断时,我遇到过在windows的WPS,mac的number上,都会有默认的几行NULL值跟文件一同上传过来,而且怎么也去不掉,所以如果需要判断解析的数组值得话,可能会出错,为了避免这样的情况,在取值时过滤掉NULL值,不要它就好了。

public function analysisexcToArray($filePath = '', $sheet = 0) {
	 // 这个PHPExcel路径就自己看着改啦
    import('Vendor.PHPExcel.PHPExcel');
    import('Vendor.PHPExcel.PHPExcel.IOFactory.php');
    // 判断文件路径
    if(empty($filePath) or !file_exists($filePath)) {
        return FALSE;
    }
    // 建立reader对象(这里是用于适用两种excle版本的导入)
    $PHPReader = new PHPExcel_Reader_Excel2007(); 
    if(!$PHPReader->canRead($filePath)){
        $PHPReader = new PHPExcel_Reader_Excel5();
        if(!$PHPReader->canRead($filePath)){
            return FALSE;
        }
    }
    // 建立excel对象
    $PHPExcel = $PHPReader->load($filePath);  
    // 读取excel文件中的指定工作表    
    $currentSheet = $PHPExcel->getSheet($sheet);        
    // 取得最大的列数
    $allColumn = $currentSheet->getHighestColumn();        
    $allRow = $currentSheet->getHighestRow();  
    $returnData = array();
    // 整合为二维数组
    for($rowIndex = 1; $rowIndex <= $allRow; $rowIndex++){        
        for($colIndex = 'A'; $colIndex <= $allColumn; $colIndex++){
            $addr = $colIndex.$rowIndex;
            $cell = $currentSheet->getCell($addr)->getValue();
            // 富文本转换字符串
            //instanceof 作用1)判断一个对象是否是某个类的实例,(2)判断一个对象是否实现了某个接口。
            if($cell instanceof PHPExcel_RichText){ 
                $cell = $cell->__toString();
            }
            // 过滤空行
            if (!is_null($cell)) {
                $returnData[$rowIndex][] = $cell;
            }
        }
    }
    return $returnData;
}
原文地址:https://www.cnblogs.com/maomojun/p/7343100.html