phpexcel 導(dǎo)入、導(dǎo)出

 /**
     * @return array
     * 導(dǎo)入excel
     */
    public function excel(){
        $file = request()->file('file');
        $info = $file->validate(['ext' => 'xlsx,xls,csv'])->move('../public/uploads');
        //數(shù)據(jù)為空返回錯誤
        if(empty($info)){
            $output['status'] = false;
            $output['info'] = '導(dǎo)入數(shù)據(jù)失敗~';
            return ['code'=>200,'msg'=>$output];
        }
        //獲取文件名
        $exclePath = $info->getSaveName();
        //上傳文件的地址
        $filename = $_SERVER['DOCUMENT_ROOT']. '/uploads/' . $exclePath;
        //判斷截取文件
        $extension = strtolower( pathinfo($filename, PATHINFO_EXTENSION) );
        include_once '../extend/PHPExcel/PHPExcel.php';
        include_once '../extend/PHPExcel/PHPExcel/IOFactory.php';
        //區(qū)分上傳文件格式
        if($extension == 'xlsx') {
            //引入PHPExcel類
            $objReader = \PHPExcel_IOFactory::createReader('Excel2007');
//            $objReader =  new \PHPExcel_Reader_Excel2007();
            $objPHPExcel = $objReader->load($filename);
        }else if($extension == 'xls'){
            $objReader = \PHPExcel_IOFactory::createReader('Excel5');
//            $objReader = new \PHPExcel_Reader_Excel5();
            $objPHPExcel = $objReader->load($filename);
        }else if($extension == 'csv'){
            $objReader = \PHPExcel_IOFactory::createReader('CSV')
                ->setDelimiter(',')
                ->setInputEncoding('GBK')
                ->setEnclosure('"')
//                ->setLineEnding("\r\n")
                ->setSheetIndex(0);
//            $objReader = new \PHPExcel_Reader_Excel5();
            $objPHPExcel = $objReader->load($filename);
        }
        $sheet = $objPHPExcel->getSheet(0);
        $highestRow = $sheet->getHighestRow(); // 取得總行數(shù)
        $highestColumn = $sheet->getHighestColumn(); // 取得總列數(shù)*/
//        $excel_array = $objPHPExcel->getActiveSheet()->toArray(null,true,true,true);
        $excel_array = $objPHPExcel->getsheet(0)->toArray();   //轉(zhuǎn)換為數(shù)組格式
        array_shift($excel_array);  //刪除第一個數(shù)組(標題);
        $city = [];
        foreach($excel_array as $k=>$v) {
//            $city[$k]['access_no'] = $v[0];
//            $city[$k]['access_name'] = $v[1];
//            $city[$k]['access_mobile'] = $v[2];
//            $city[$k]['access_address'] = $v[3];
//            $city[$k]['access_zip_code'] = $v[4];
//            $city[$k]['access_weight'] = $v[5];
            $city[$k]['access_no'] = $v[0];
            $city[$k]['access_name'] = $v[14];
            $city[$k]['access_mobile'] = $v[18];
            $city[$k]['access_address'] = $v[15];
        }
        if ($city){
            return json(['code'=>200,'msg'=>'成功','data'=>$city]);
        }else{
            return json(['code' => 400,'msg'=>'失敗']);
        }
    }

/**
     * 導(dǎo)出excel表格
     * @param   array    $columName    第一行的列名稱
     * @param   array    $list         二維數(shù)組
     * @param   string   $setTitle    sheet名稱
     * @return
     * @author  Tggui <tggui@vip.qq.com>
     */
    public function exportExcel($columName, $list, $setTitle='Sheet1', $fileName='demo'){
        include_once '../extend/PHPExcel/PHPExcel.php';
        include_once '../extend/PHPExcel/PHPExcel/IOFactory.php';
        if ( empty($columName) || empty($list) ) {
            return '列名或者內(nèi)容不能為空';
        }
        if ( count($list[0]) != count($columName) ) {

            return '列名跟數(shù)據(jù)的列不一致' . count($list[0]) .'-'. count($columName);
        }

        //實例化PHPExcel類
        $PHPExcel    =    new \PHPExcel();
        //獲得當前sheet對象
        $PHPSheet    =    $PHPExcel    ->    getActiveSheet();
        //定義sheet名稱
        $PHPSheet    ->    setTitle($setTitle);

        //excel的列 這么多夠用了吧?不夠自個加 AA AB AC ……
        $letter        =    [
            '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'
        ];
        //把列名寫入第1行 A1 B1 C1 ...
        for ($i=0; $i < count($list[0]); $i++) {
            //$letter[$i]1 = A1 B1 C1  $letter[$i] = 列1 列2 列3
            $PHPSheet->setCellValue("$letter[$i]1","$columName[$i]");
        }
        //內(nèi)容第2行開始
        foreach ($list as $key => $val) {
            //array_values 把一維數(shù)組的鍵轉(zhuǎn)為0 1 2 3 ..
            foreach (array_values($val) as $key2 => $val2) {
                //$letter[$key2].($key+2) = A2 B2 C2 ……
                $PHPSheet->setCellValue($letter[$key2].($key+2),$val2);
            }
        }
        //生成2007版本的xlsx
//        $PHPWriter = \PHPExcel_IOFactory::createWriter($PHPExcel,'Excel2007');
        $PHPWriter = \PHPExcel_IOFactory::createWriter($PHPExcel,'Excel5');
        header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
        header('Content-Disposition: attachment;filename='.$fileName.'.xlsx');
        header('Cache-Control: max-age=0');
        $PHPWriter->save("php://output");
    }
    public function file_export_excel(){
        $order_id = input('get.order_id');
        $titlname    =    ['訂單號','運單號','收件人姓名','收件人手機號','收件人地址'];
        $this->exportExcel($titlname,$or);
    }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末汰蓉,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌坡倔,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,194評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異罪塔,居然都是意外死亡投蝉,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評論 2 385
  • 文/潘曉璐 我一進店門征堪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來瘩缆,“玉大人,你說我怎么就攤上這事请契】劝瘢” “怎么了?”我有些...
    開封第一講書人閱讀 156,780評論 0 346
  • 文/不壞的土叔 我叫張陵爽锥,是天一觀的道長涌韩。 經(jīng)常有香客問我,道長氯夷,這世上最難降的妖魔是什么臣樱? 我笑而不...
    開封第一講書人閱讀 56,388評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮腮考,結(jié)果婚禮上雇毫,老公的妹妹穿的比我還像新娘。我一直安慰自己踩蔚,他們只是感情好棚放,可當我...
    茶點故事閱讀 65,430評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著馅闽,像睡著了一般飘蚯。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上福也,一...
    開封第一講書人閱讀 49,764評論 1 290
  • 那天局骤,我揣著相機與錄音,去河邊找鬼暴凑。 笑死峦甩,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的现喳。 我是一名探鬼主播凯傲,決...
    沈念sama閱讀 38,907評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼拿穴!你這毒婦竟也來了泣洞?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,679評論 0 266
  • 序言:老撾萬榮一對情侶失蹤默色,失蹤者是張志新(化名)和其女友劉穎球凰,沒想到半個月后狮腿,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,122評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡呕诉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,459評論 2 325
  • 正文 我和宋清朗相戀三年缘厢,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片甩挫。...
    茶點故事閱讀 38,605評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡贴硫,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出伊者,到底是詐尸還是另有隱情英遭,我是刑警寧澤,帶...
    沈念sama閱讀 34,270評論 4 329
  • 正文 年R本政府宣布亦渗,位于F島的核電站挖诸,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏法精。R本人自食惡果不足惜多律,卻給世界環(huán)境...
    茶點故事閱讀 39,867評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望搂蜓。 院中可真熱鬧狼荞,春花似錦、人聲如沸帮碰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽殉挽。三九已至攻走,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間此再,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評論 1 265
  • 我被黑心中介騙來泰國打工玲销, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留输拇,地道東北人。 一個月前我還...
    沈念sama閱讀 46,297評論 2 360
  • 正文 我出身青樓贤斜,卻偏偏與公主長得像策吠,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子瘩绒,可洞房花燭夜當晚...
    茶點故事閱讀 43,472評論 2 348