ThinkPHP5.0 使用phpexcel導(dǎo)入數(shù)據(jù)庫(kù)

先把html代碼貼出來(lái)(整個(gè)導(dǎo)入導(dǎo)出的):

<form action="ADMIN_MAIN/Excel/into" enctype="multipart/form-data" method="post">
    <input  type="file" name="file_stu" />
    <input type="submit"  value="導(dǎo)入" />
</form>

<form action="ADMIN_MAIN/Excel/out" enctype="multipart/form-data" method="post">
    <input type="submit" value="導(dǎo)出">
</form>

導(dǎo)入的方法:

網(wǎng)上試了好多方法严衬,不是找不到update類就是引入某些文件引入不進(jìn)來(lái)骡和。然后東拼西湊的寫法苗缩,解決了以上問(wèn)題樊销。需要用到一個(gè)ExcelToArrary.class.php這樣的文件整慎。(后面附上文件 以及詳細(xì)說(shuō)明)里面的方法一般除了vendor引用的文件根據(jù)自己目錄可能需要更改一下以外,其余的基本上不用改動(dòng)的围苫。

    public function into()
    {
        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];
            /*判別是不是.xls文件裤园,判別是不是excel文件*/
            if (strtolower($file_type) != "xlsx") {
                $this->error('不是Excel文件,重新上傳');
            }
            /*設(shè)置上傳路徑*/
            /*百度有些文章寫的上傳路徑經(jīng)過(guò)編譯之后斜杠不對(duì)剂府。不對(duì)的時(shí)候用大寫的DS代替拧揽,然后用連接符鏈接就可以拼湊路徑了。*/
            $savePath = ROOT_PATH . 'public' . DS . 'upload' . DS;

            /*以時(shí)間來(lái)命名上傳的文件*/
            $str = date('Ymdhis');
            $file_name = $str . "." . $file_type;
            /*是否上傳成功*/
            if (!copy($tmp_file, $savePath . $file_name)) {
                $this->error('上傳失敗');
            }
            /*
            *對(duì)上傳的Excel數(shù)據(jù)進(jìn)行處理生成編程數(shù)據(jù),這個(gè)函數(shù)會(huì)在下面第三步的ExcelToArray類中
            *注意:這里調(diào)用執(zhí)行了第三步類里面的read函數(shù)周循,把Excel轉(zhuǎn)化為數(shù)組并返回給$res,再進(jìn)行數(shù)據(jù)庫(kù)寫入
            */
            require THINK_PATH.'Library/Org1/Util/ExcelToArrary.class.php';//導(dǎo)入excelToArray類
          //引入這個(gè)類試了百度出來(lái)的好幾個(gè)方法都不行强法。最后簡(jiǎn)單粗暴的使用了require方式。這個(gè)類想放在哪里放在哪里湾笛。只要路徑對(duì)就行饮怯。
            $ExcelToArrary=new \ExcelToArrary();//實(shí)例化

            $res=$ExcelToArrary->read($savePath.$file_name,"UTF-8",$file_type);//傳參,判斷office2007還是office2003

            /*對(duì)生成的數(shù)組進(jìn)行數(shù)據(jù)庫(kù)的寫入*/
            foreach ($res as $k => $v) {
                if ($k > 1) {
                    $data[$k]['username'] = $v[1];
                    $data[$k]['phone'] = $v[2];
//                    $data ['password'] = sha1('111111');
                }
            }
            //插入的操作最好放在循環(huán)外面
            $result = db('sys_ceshi')->insertAll($data);
            //var_dump($result);
        }
    }

ExcelToArrary.class.php

<?php
/** 
 * 讀取Excel數(shù)據(jù)
 */
class ExcelToArrary {
    public function __construct() {
        //這些文件需要下載phpexcel,然后放在vendor文件里面嚎研。具體參考上一篇數(shù)據(jù)導(dǎo)出蓖墅。
        vendor("PHPExcel.PHPExcel.PHPExcel");
        vendor("PHPExcel.PHPExcel.Writer.Excel5");
        vendor("PHPExcel.PHPExcel.Writer.Excel2007");
        vendor("PHPExcel.PHPExcel.IOFactory");
    }
    public function read($filename,$encode,$file_type){
            if(strtolower ( $file_type )=='xls')//判斷excel表類型為2003還是2007
            {
                Vendor("Excel.PHPExcel.Reader.Excel5"); 
                $objReader = PHPExcel_IOFactory::createReader('Excel5');
                $objReader = PHPExcel_IOFactory::createReader('Excel5');

            }elseif(strtolower ( $file_type )=='xlsx')
            {
                Vendor("Excel.PHPExcel.Reader.Excel2007"); 
                $objReader = PHPExcel_IOFactory::createReader('Excel2007');
            }
            $objReader->setReadDataOnly(true);
            $objPHPExcel = $objReader->load($filename);
            $objWorksheet = $objPHPExcel->getActiveSheet();
            $highestRow = $objWorksheet->getHighestRow();
            $highestColumn = $objWorksheet->getHighestColumn();
            $highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn);
            $excelData = array();
            for ($row = 1; $row <= $highestRow; $row++) {
                for ($col = 0; $col < $highestColumnIndex; $col++) {
                    $excelData[$row][] =(string)$objWorksheet->getCellByColumnAndRow($col, $row)->getValue();
                    }
            }
            return $excelData;
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市临扮,隨后出現(xiàn)的幾起案子论矾,更是在濱河造成了極大的恐慌,老刑警劉巖杆勇,帶你破解...
    沈念sama閱讀 206,378評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件贪壳,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡蚜退,警方通過(guò)查閱死者的電腦和手機(jī)闰靴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門彪笼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人蚂且,你說(shuō)我怎么就攤上這事配猫。” “怎么了杏死?”我有些...
    開(kāi)封第一講書人閱讀 152,702評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵泵肄,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我淑翼,道長(zhǎng)腐巢,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 55,259評(píng)論 1 279
  • 正文 為了忘掉前任窒舟,我火速辦了婚禮系忙,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘惠豺。我一直安慰自己,他們只是感情好风宁,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,263評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布洁墙。 她就那樣靜靜地躺著,像睡著了一般戒财。 火紅的嫁衣襯著肌膚如雪热监。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 49,036評(píng)論 1 285
  • 那天饮寞,我揣著相機(jī)與錄音孝扛,去河邊找鬼。 笑死幽崩,一個(gè)胖子當(dāng)著我的面吹牛苦始,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播慌申,決...
    沈念sama閱讀 38,349評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼陌选,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了蹄溉?” 一聲冷哼從身側(cè)響起咨油,我...
    開(kāi)封第一講書人閱讀 36,979評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎柒爵,沒(méi)想到半個(gè)月后役电,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,469評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡棉胀,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,938評(píng)論 2 323
  • 正文 我和宋清朗相戀三年法瑟,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了冀膝。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,059評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡瓢谢,死狀恐怖畸写,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情氓扛,我是刑警寧澤枯芬,帶...
    沈念sama閱讀 33,703評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站采郎,受9級(jí)特大地震影響千所,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜蒜埋,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,257評(píng)論 3 307
  • 文/蒙蒙 一淫痰、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧整份,春花似錦待错、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,262評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至讲冠,卻和暖如春瓜客,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背竿开。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工谱仪, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人否彩。 一個(gè)月前我還...
    沈念sama閱讀 45,501評(píng)論 2 354
  • 正文 我出身青樓疯攒,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親胳搞。 傳聞我的和親對(duì)象是個(gè)殘疾皇子卸例,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,792評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)肌毅,斷路器筷转,智...
    卡卡羅2017閱讀 134,599評(píng)論 18 139
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,510評(píng)論 25 707
  • 世界上最好吃的美食不是山珍海味,不是什么大魚(yú)大肉 而是 baba做法:準(zhǔn)備一個(gè)大碗悬而,注意是大碗呜舒!加入面粉與水,簡(jiǎn)單...
    白茶與世無(wú)爭(zhēng)閱讀 175評(píng)論 0 0
  • 從小到大笨奠,身邊有很多人都會(huì)問(wèn)你想成為什么樣的人袭蝗。小時(shí)候唤殴,你會(huì)很詳細(xì)的描述你自己想象的未來(lái),像是那就是你的未來(lái)到腥,長(zhǎng)大...
    MAMANancy閱讀 293評(píng)論 0 0
  • 時(shí)間煮雨詮釋了在時(shí)光的荒野里怎樣的絕情與殘酷朵逝?八月最后一天,我不想說(shuō)"再見(jiàn)"乡范,也不想說(shuō)"九月配名,你好"。...
    守望幸福_a029閱讀 240評(píng)論 2 3