zoukankan      html  css  js  c++  java
  • 黄聪:超实用的PHPExcel[导入][导出]实现方法总结

    首先需要去官网https://github.com/PHPOffice/PHPExcel/下载PHPExcel,下载后只需要Classes目录下的文件即可。

    1、PHPExcel导出方法实现过程

    /** 
     * 数据导出 
     * @param array $title   标题行名称 
     * @param array $data   导出数据 
     * @param string $fileName 文件名 
     * @param string $savePath 保存路径 
     * @param $type   是否下载  false--保存   true--下载 
     * @return string   返回文件全路径 
     * @throws PHPExcel_Exception 
     * @throws PHPExcel_Reader_Exception 
     */  
    function exportExcel($title=array(), $data=array(), $fileName='', $savePath='./', $isDown=false){  
        include('PHPExcel.php');  
        $obj = new PHPExcel();  
      
        //横向单元格标识  
        $cellName = array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'AG', 'AH', 'AI', 'AJ', 'AK', 'AL', 'AM', 'AN', 'AO', 'AP', 'AQ', 'AR', 'AS', 'AT', 'AU', 'AV', 'AW', 'AX', 'AY', 'AZ');  
          
        $obj->getActiveSheet(0)->setTitle('sheet名称');   //设置sheet名称  
        $_row = 1;   //设置纵向单元格标识  
        if($title){  
            $_cnt = count($title);  
            $obj->getActiveSheet(0)->mergeCells('A'.$_row.':'.$cellName[$_cnt-1].$_row);   //合并单元格  
            $obj->setActiveSheetIndex(0)->setCellValue('A'.$_row, '数据导出:'.date('Y-m-d H:i:s'));  //设置合并后的单元格内容  
            $_row++;  
            $i = 0;  
            foreach($title AS $v){   //设置列标题  
                $obj->setActiveSheetIndex(0)->setCellValue($cellName[$i].$_row, $v);  
                $i++;  
            }  
            $_row++;  
        }  
      
        //填写数据  
        if($data){  
            $i = 0;  
            foreach($data AS $_v){  
                $j = 0;  
                foreach($_v AS $_cell){  
                    $obj->getActiveSheet(0)->setCellValue($cellName[$j] . ($i+$_row), $_cell);  
                    $j++;  
                }  
                $i++;  
            }  
        }  
          
        //文件名处理  
        if(!$fileName){  
            $fileName = uniqid(time(),true);  
        }  
      
        $objWrite = PHPExcel_IOFactory::createWriter($obj, 'Excel2007');  
      
        if($isDown){   //网页下载  
            header('pragma:public');  
            header("Content-Disposition:attachment;filename=$fileName.xls");  
            $objWrite->save('php://output');exit;  
        }  
      
        $_fileName = iconv("utf-8", "gb2312", $fileName);   //转码  
        $_savePath = $savePath.$_fileName.'.xlsx';  
         $objWrite->save($_savePath);  
      
         return $savePath.$fileName.'.xlsx';  
    }  
      
    //exportExcel(array('姓名','年龄'), array(array('a',21),array('b',23)), '档案', './', true); 

    2、PHPExcel导入方法实现过程

    /** 
    *  数据导入 
    * @param string $file excel文件 
    * @param string $sheet 
     * @return string   返回解析数据 
     * @throws PHPExcel_Exception 
     * @throws PHPExcel_Reader_Exception 
    */  
    function importExecl($file='', $sheet=0){  
        $file = iconv("utf-8", "gb2312", $file);   //转码  
        if(empty($file) OR !file_exists($file)) {  
            die('file not exists!');  
        }  
        include('PHPExcel.php');  //引入PHP EXCEL类  
        $objRead = new PHPExcel_Reader_Excel2007();   //建立reader对象  
        if(!$objRead->canRead($file)){  
            $objRead = new PHPExcel_Reader_Excel5();  
            if(!$objRead->canRead($file)){  
                die('No Excel!');  
            }  
        }  
      
        $cellName = array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'AG', 'AH', 'AI', 'AJ', 'AK', 'AL', 'AM', 'AN', 'AO', 'AP', 'AQ', 'AR', 'AS', 'AT', 'AU', 'AV', 'AW', 'AX', 'AY', 'AZ');  
      
        $obj = $objRead->load($file);  //建立excel对象  
        $currSheet = $obj->getSheet($sheet);   //获取指定的sheet表  
        $columnH = $currSheet->getHighestColumn();   //取得最大的列号  
        $columnCnt = array_search($columnH, $cellName);  
        $rowCnt = $currSheet->getHighestRow();   //获取总行数  
      
        $data = array();  
        for($_row=1; $_row<=$rowCnt; $_row++){  //读取内容  
            for($_column=0; $_column<=$columnCnt; $_column++){  
                $cellId = $cellName[$_column].$_row;  
                $cellValue = $currSheet->getCell($cellId)->getValue();  
                 //$cellValue = $currSheet->getCell($cellId)->getCalculatedValue();  #获取公式计算的值  
                if($cellValue instanceof PHPExcel_RichText){   //富文本转换字符串  
                    $cellValue = $cellValue->__toString();  
                }  
      
                $data[$_row][$cellName[$_column]] = $cellValue;  
            }  
        }  
      
        return $data;  
    }  

    版权声明:本文为博主原创文章,未经博主允许不得转载。 http://blog.csdn.net/u014236259/article/details/60601767

  • 相关阅读:
    POJ 1015 Jury Compromise【DP】
    POJ 1661 Help Jimmy【DP】
    HDU 1074 Doing Homework【状态压缩DP】
    HDU 1024 Max Sum Plus Plus【DP,最大m子段和】
    占坑补题。。最近占的坑有点多。。。
    Codeforces 659F Polycarp and Hay【BFS】
    Codeforces 659E New Reform【DFS】
    Codeforces 659D Bicycle Race【计算几何】
    廖大python实战项目第四天
    廖大python实战项目第三天
  • 原文地址:https://www.cnblogs.com/huangcong/p/8540729.html
Copyright © 2011-2022 走看看