PHPExcel讀取excel文件

PHPExcel是個很強大的類庫,之前只使用過它生成Excel文件,很是方便。

今天接到個項目要讀取Excel的文件,之前也作過Excel轉換寫入數據庫的工做, 

不過相對簡單一些,是轉換成CSV格式再進行解析的。

首先下載PHPExcel類庫。http://phpexcel.codeplex.com/

包含PHPExcel類庫文件,若是不能肯定文件類型的話能夠使用PHPExcel_IOFactory::identify方法返回文件的類型,傳遞給該函數一個文件名就能夠。

而後根據返回的文件類型建立該類型的讀取對象,進行文件的load。

以後就能夠進行數據的讀取了,
具體代碼以下所示:

php

    1. <?php
    2.     require_once('include/common.inc.php');
    3.     require_once(ROOTPATH . 'include/phpExcel/PHPExcel/IOFactory.php');
    4.     
    5.     $filePath = './file/xls/110713.xls'; 
    6.     
    7.     $fileType = PHPExcel_IOFactory::identify($filePath); //文件名自動判斷文件類型
    8.     $objReader = PHPExcel_IOFactory::createReader($fileType);
    9.     $objPHPExcel = $objReader->load($filePath);
    10.     
    11.     $currentSheet = $objPHPExcel->getSheet(0); //第一個工做簿
    12.     $allRow = $currentSheet->getHighestRow(); //行數
    13.     $output = array();
    14.     $preType = '';
    15.     
    16.     $qh = $currentSheet->getCell('A4')->getValue();
    17.     //按照文件格式從第7行開始循環讀取數據
    18.     for($currentRow = 7;$currentRow<=$allRow;$currentRow++){ 
    19.         //判斷每一行的B列是否爲有效的序號,若是爲空或者小於以前的序號則結束
    20.         $xh = (int)$currentSheet->getCell('B'.$currentRow)->getValue();
    21.         if(empty($xh))break;
    22.         
    23.         $tmpType = (string)$currentSheet->getCell('C'.$currentRow)->getValue(); //賽事類型
    24.         if(!empty($tmpType))$preType = $tmpType;
    25.         $output[$xh]['type'] = $preType;
    26.         $output[$xh]['master'] = $currentSheet->getCell('F'.$currentRow)->getValue(); //主隊
    27.         $output[$xh]['guest'] = $currentSheet->getCell('H'.$currentRow)->getValue(); //客隊    
    28.     }
    29.     
    30.     //從當前行開始往下循環,取出第一個不爲空的行
    31.     for( ; ; $currentRow++){
    32.         $xh = (int)$currentSheet->getCell('B'.$currentRow)->getValue();
    33.         if(!empty($xh))break;
    34.     }
    35.     
    36.     for( ; $currentRow <= $allRow; $currentRow++){
    37.         $xh = (int)$currentSheet->getCell('B'.$currentRow)->getValue();
    38.         if(empty($xh))break;
    39.         
    40.         $output[$xh]['rq'] = $currentSheet->getCell('I'.$currentRow)->getValue();
    41.     }
    42.     header("content-type:text/html; charset=utf-8");
    43.     
    44.     echo '期號:' . $qh . "\n\n";
    45.     if(!empty($output)){
    46.         printf("%-5s\t%-15s\t%-40s\t%-40s\t%-5s\n", '序號', '賽事類型', '主隊', '客隊', '讓球值');
    47.         foreach($output as $key => $row){
    48.             $format = "%-5d\t%-15s\t%-40s\t%-40s\t%-5s\n";
    49.             printf($format, $key, $row['type'], $row['master'], $row['guest'], $row['rq']);
    50.         }
    51.     }
    52. ?>
相關文章
相關標籤/搜索