• 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;
    }
  • 相关阅读:
    常见的灰度发布系统规则
    golang中的路由分组
    艾森豪威尔矩阵
    列文定理
    吃狗粮定理
    mysql事务 锁
    mysql中explain优化分析
    mysql hash索引优化
    各种浏览器内核介绍
    浏览器 兼容性问题总结
  • 原文地址:https://www.cnblogs.com/maomojun/p/7343100.html
Copyright © 2020-2023  润新知