phpexcel 讀取數據


最近公司做一個客戶導入會員的功能,以前導入都是使用csv格式導入的,但是客戶反應問題挺多的,普遍是亂碼(由於各種系統各種環境可能引起編碼問題)。最近想着就把這個導入完全改成excel導入,就研究了下phpexcel,發現讀取excel還是挺方便的,這樣也方便客戶了,比較excel 無論用office 還是 wps 打開都是沒有問題的

示例讀取代碼如下

/*
 * $path excel文件路徑
 * $header_mapping 文字和數據庫字段的對應關系
 * excel第一行 是 字段標准(通常是漢字),
 * example
 * $header_mapping = [ '姓名' => 'uid' ];
 *
 */
private function readExcel( $path,$header_mapping = []){
        $objPHPExcel = PHPExcel_IOFactory::load( $path );
        //選擇標簽頁

        $sheet = $objPHPExcel->getSheet(0);

        //獲取行數與列數,注意列數需要轉換
        $highestRowNum = $sheet->getHighestRow();
        $highestColumn = $sheet->getHighestColumn();
        $highestColumnNum = PHPExcel_Cell::columnIndexFromString($highestColumn);
        $usefullColumnNum = $highestColumnNum;

        //取得字段,這里測試表格中的第一行為數據的字段,因此先取出用來作后面數組的鍵名
        $filed = array();
        for($i=0; $i<$highestColumnNum;$i++){
            $cellName = PHPExcel_Cell::stringFromColumnIndex($i).'1';
            $cellVal = $sheet->getCell($cellName)->getValue();//取得列內容
            if( !$cellVal ){
                break;
            }
            $usefullColumnNum = $i;
            $filed []= $cellVal;
        }

        //開始取出數據並存入數組
        $data = [];
        for( $i=2; $i <= $highestRowNum ;$i++ ){//ignore row 1
            $row = array();
            for( $j = 0; $j <= $usefullColumnNum;$j++ ){
                if( !isset($header_mapping[ $filed[$j] ]) ){
                    continue;
                }
                $cellName = PHPExcel_Cell::stringFromColumnIndex($j).$i;
                $cellVal = $sheet->getCell($cellName)->getValue();
                if($cellVal instanceof PHPExcel_RichText){ //富文本轉換字符串
                    $cellVal = $cellVal->__toString();
                }

                $fd = $header_mapping[ $filed[$j] ];
                $row[ $fd ] = $cellVal;
            }
            $data []= $row;
        }
        return $data;
}

/*
 * excel日期轉化
 * excel中日期讀取出來是個數字,需要轉化
 **/
private function excelTime( $date ){
    $date = date("Y-m-d",PHPExcel_Shared_Date::ExcelToPHP($date) );
    return  $date;
}


演示界面截圖

600


600


600


phpexcel地址

https://github.com/PHPOffice/PHPExcel 


注意事項

1:日期格式處理  ,處理如下

//phpexcel 讀取日期格式出來是個數字
$date = date("Y-m-d",PHPExcel_Shared_Date::ExcelToPHP($date) );

2:長整形處理

//php讀取excel長整形會以科學計數法記錄
number_format( $val,0,'','');



原文地址: phpexcel 讀取數據
標簽: phpexcel    read    讀取   

智能推薦


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM