thinkPHP导入Excel文件到数据库和导出到Excel

1.官网下载PHPExcel库地址:

https://github.com/PHPOffice/PHPExcel

2导入账号控制器中



/**

    * 导入员工账号

*/

public function fabu1(){

        Loader::import('PHPExcel.PHPExcel');

        Loader::import('PHPExcel.PHPExcel.PHPExcel_IOFactory');

        Loader::import('PHPExcel.PHPExcel.PHPExcel_Cell'); //实例化PHPExcel

          $objPHPExcel = new \PHPExcel();

          $file = request()->file('excel');

          if ($file) {

              $file_types = explode(".", $_FILES ['excel'] ['name']); // ["name"] => string(25) "excel文件名.xls"

          $file_type = $file_types [count($file_types) - 1];//xls后缀

          $file_name = $file_types [count($file_types) - 2];//xls去后缀的文件名 /*判别是不是.xls文件,判别是不是excel文件*/

          if (strtolower($file_type) != "xls" && strtolower($file_type) != "xlsx") { echo '不是Excel文件,重新上传'; die;

          }

            $info = $file->move(ROOT_PATH . 'public' . DS . 'excel');//上传位置

            $path = ROOT_PATH . 'public' . DS . 'excel' . DS; $file_path = $path . $info->getSaveName();//上传后的EXCEL路径

            $re = $this->actionRead($file_path, 'utf-8');

                array_splice($re, 1, 0);

                unset($re[0]);

                /*将数组的键改为自定义名称*/

                // print_r($re);die;

                $keys = array('name','password','number'); //键名按顺序

                foreach ($re as $i => $vals) {

                  $re[$i] = array_combine($keys, $vals);

                }

                // print_r($re);die;


              for ($i = 1; $i <= count($re); $i++) {

              $data['name'] = $re[$i]['name'];

              $data['password'] = $re[$i]['password'];

              $data['number'] = $re[$i]['number'];

              // print_r($data);die;

              $arr = Db::name('user')->where('name',$re[$i]['name'])->find();

              if(!$arr){

                  $res = Db::name('user')->insert($data);

              }

              }

        }

        return $this->redirect('xfabu');

}



3.

public function actionRead($filename,$encode='utf-8'){

  $objReader = \PHPExcel_IOFactory::createReader('Excel2007');

  $objReader->setReadDataOnly(true);

  $objPHPExcel = $objReader->load($filename);

  $objWorksheet = $objPHPExcel->getActiveSheet();

  $highestRow = $objWorksheet->getHighestRow(); //return $highestRow;

  $highestColumn = $objWorksheet->getHighestColumn();

  $highestColumnIndex = \PHPExcel_Cell::columnIndexFromString($highestColumn);

  //var_dump($highestColumnIndex);

  $excelData = array();

  for($row = 1; $row <= $highestRow; $row++) {

    for ($col = 0; $col < $highestColumnIndex; $col++) {

      $excelData[$row][]=(string)$objWorksheet->getCellByColumnAndRow($col, $row)->getValue();

    }

  }

  return $excelData;

}

4.文件中


5.数据库中


6导出到Excel



7代码

/*导出到Excel*/

public function phpExcelList($field, $list, $title='文件')

    {

        Loader::import('PHPExcel.PHPExcel');

        Loader::import('PHPExcel.PHPExcel.PHPExcel_IOFactory');

        Loader::import('PHPExcel.PHPExcel.PHPExcel_Cell'); //实例化PHPExcel

          $objPHPExcel = new \PHPExcel();

        // vendor('phpExcel.PHPExcel');

        // $objPHPExcel = new \PHPExcel();

        $objWriter = new \PHPExcel_Writer_Excel5($objPHPExcel); //设置保存版本格式

        foreach ($list as $key => $value) {

            foreach ($field as $k => $v) {

                if ($key == 0) {

                    $objPHPExcel->getActiveSheet()->setCellValue($k . '1', $v[1]);

                }

                $i = $key + 2; //表格是从2开始的

                $objPHPExcel->getActiveSheet()->setCellValue($k . $i, $value[$v[0]]);

            }

        }

        header("Pragma: public");

        header("Expires: 0");

        header("Cache-Control:must-revalidate, post-check=0, pre-check=0");

        header("Content-Type:application/force-download");

        header("Content-Type:application/vnd.ms-execl");

        header("Content-Type:application/octet-stream");

        header("Content-Type:application/download");;

        header('Content-Disposition:attachment;filename='.$title.'.xls');

        header("Content-Transfer-Encoding:binary");

//        $objWriter->save($title.'.xls');

        $objWriter->save('php://output');

    }

      public function outExcelRecharge() {


        //手机号

        $data = Db::name('phone')

                    ->alias('a')

                    ->field(['a.id','a.phone','a.beizhu','a.status','a.time','a.type','a.user_id'])

                    ->join('admin_chudan u','u.phone_id=a.id','left')

                    ->field('u.user_bianhao ,u.name as uname,u.phone as uphone,u.address,u.money,u.time as utime,u.status as ustatus')

                    ->join('admin_user s','s.id=a.user_id','left')

                    ->field('s.name as sname,s.number as snumber')

                    ->order('u.user_id desc')

                    ->select();

        foreach ($data as $key => $value) {

          if($data[$key]['type'] == 0){ $data[$key]['type'] ="无" ;} else if($data[$key]['type'] == 1){ $data[$key]['type'] ="审核中" ;}else if($data[$key]['type'] == 2){ $data[$key]['type'] ="已出单" ;}

          if($data[$key]['status'] == 0){ $data[$key]['status'] ="未拨打" ;} else if($data[$key]['status'] == 1){ $data[$key]['status'] ="已拨打" ;}

        }

        $field = array(

            'A' => array('id', 'ID'),

            'B' => array('user_id', '员工ID'),

            'C' => array('sname', '员工账号'),

            'D' => array('snumber', '员工编号'),

            'E' => array('phone', '手机号'),

            'F' => array('beizhu', '备注'),

            'J' => array('type', '出单状态'),

            'H' => array('status', '拨打状态'),

            'I' => array('utime', '出单时间'),

            'G' => array('uname', '用户姓名'),

            'K' => array('address', '用户地址'),

            'L' => array('money', '出单金额'),

        );


        $this->phpExcelList($field, $data, '手机号' . date('Y-m-d'));

    }


最后结果


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,657评论 6 505
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,889评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,057评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,509评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,562评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,443评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,251评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,129评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,561评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,779评论 3 335
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,902评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,621评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,220评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,838评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,971评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,025评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,843评论 2 354

推荐阅读更多精彩内容

  • pyspark.sql模块 模块上下文 Spark SQL和DataFrames的重要类: pyspark.sql...
    mpro阅读 9,453评论 0 13
  • 方法一 function upExecel(){//判断是否选择了要上传的表格if (empty($_POST['...
    追光者2阅读 336评论 0 0
  • "use strict";function _classCallCheck(e,t){if(!(e instanc...
    久些阅读 2,030评论 0 2
  • 星河明灭此更风,一毕人间爽籁功。 自有闲情翻墨卷,应无暗恨谢芳丛。 徐吹客帐疑秋日,漫引乡心似过鸿。 月下临窗知解...
    北辰王宥先阅读 565评论 3 27
  • 这几日伤了腰,不能出远门,也不能干重活,大夫说不能爬山,但可以游泳。 记得庄工(一起出游的伙伴)那天在山上告诉我:...
    关中人阅读 336评论 0 1