TP5.0 excel 導入導出


引第三方的phpexcel類庫放到 ThinkPHP\Library\Vendor\demo下,自己建的文件夾demo

再將Excel.class放到ThinkPHP\Library\Org\class下,自己建的文件夾class

控制器:

<?php
namespace Admin\Controller;
use Think\Controller;
class ExcelController extends Controller {
    public function excelList(){
        $this->display();
    }
//    導入
    public function import(){
        if(!empty($_FILES['file_stu']['name'])){
            $tmp_file = $_FILES['file_stu']['tmp_name'];    //臨時文件名
            $file_types = explode('.',$_FILES['file_stu']['name']); //  拆分文件名
            $file_type = $file_types [count ( $file_types ) - 1];   //  文件類型
            /*判斷是否為excel文件*/
            if($file_type == 'xls' || $file_type == 'xlsx'|| $file_type == 'csv'){    //  符合類型
                /*上傳業務*/
                $upload = new \Think\Upload();
                $upload->maxSize   =     3145728 ;
                $upload->exts      =     array('xls', 'csv', 'xlsx');
                $upload->rootPath  =      './Public';
                $upload->savePath  =      '/Excel/';
                $upload->saveName  =      date('YmdHis');
                $info   =   $upload->upload();
                if(!$info) {    // 上傳錯誤提示錯誤信息
                    $this->error($upload->getError());
                }else{  // 上傳成功

                    //  讀取文件
                    $filename='./Public'.$info['file_stu']['savepath'].$info['file_stu']['savename'];
                    import("Org.Yufan.ExcelReader");
                    vendor('PHPExcel.PHPExcel');
                    $reader = \PHPExcel_IOFactory::createReader('Excel2007'); //設置以Excel5格式(Excel97-2003工作簿)
                    $PHPExcel = $reader->load($filename); // 載入excel文件
                    $sheet = $PHPExcel->getSheet(0); // 讀取第一個工作表
                    $highestRow = $sheet->getHighestRow(); // 取得總行數
                    var_dump($highestRow);
                    $highestColumm = $sheet->getHighestColumn(); // 取得總列數

                    /** 循環讀取每個單元格的數據 */
                    $data = array();
                    for ($row = 2; $row <= $highestRow; $row++){//行數是以第1行開始

                        if($column = 'A'){
                            $data['name'] = $sheet->getCell($column.$row)->getValue();
                        }
                        if($column = 'B'){
                            $data['account'] = $sheet->getCell($column.$row)->getValue();
                        }
                        if($column = 'C'){
                            $data['password'] = $sheet->getCell($column.$row)->getValue();
                        }
                        M('data')->add($data);
                    }
                        $this->success('導入數據庫成功',U('Excel/show'));
                }
            } else{ //  不符合類型業務
                $this->error('不是excel文件,請重新上傳...');
            }
        }else{
            $this->error('(⊙o⊙)~沒傳數據就導入');
        }
    }
    //導出
    public function export(){
        import("ORG.Yufan.Excel");
        $list = M('data')->select();
        if($list == null){
            $this->error('數據庫信息為空...',__APP__.'/Admin/Excel/show');
        }else{
            $row=array();
            $row[0]=array('平台名稱','帳號','密碼');
            $i=1;
            foreach($list as $v){
                $row[$i]['name'] = $v['name'];
                $row[$i]['account'] = $v['account'];
                $row[$i]['password'] = $v['password'];
                $i++;
            }
            $xls = new \Excel_XML('UTF-8', false, 'datalist');
            $xls->addArray($row);
            $xls->generateXML(date('YmdHis'));
        }
    }
    public function show(){
        $m = M('data');
        $data = $m->select();
        $this->assign('data',$data);
        $this->display();
    }
}

視圖

excelList.html
<!
DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Excel導入導出</title> </head> <body> <div class="page-header"> <h1>TP DEMO <small>Excel導入導出練習</small> </h1> </div> <form method="post" action="{:U('Excel/import')}" class="form-signin" enctype="multipart/form-data" > <input name="file_stu" type="file" class="form-control"> <button class="btn btn-lg btn-primary btn-block">導入</button> </form> </body> </html>

視圖

show.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>表格展示</title>
</head>
<body>
<div class="page-header">
    <h1>TP DEMO
        <small>Excel導入導出練習</small>
    </h1>
</div>

<table class="table">
    <tr>
        <td><h4><b>平台名稱</b></h4></td>
        <td><h4><b>帳號</b></h4></td>
        <td><h4><b>密碼</b></h4></td>
    </tr>
    <foreach name="data" item="vo">
        <tr>
            <td>{$vo.name}</td>
            <td>{$vo.account}</td>
            <td>{$vo.password}</td>
        </tr>
    </foreach>
</table>



<form action="{:U('Excel/export')}" class="form-signin">
    <button class="btn btn-lg btn-primary btn-block">導出數據庫數據</button>
</form>

</body>
</html>

 


免責聲明!

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



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