dd

PHPExcel类添加excel文件中的数据到Mysql中

jerry thinkphp 2015年11月19日 收藏
如题
不说别的了,直接上代码。本人是个菜菜,刚学thinkphp框架,请各位高手多多指教!!测试过可以添加,不知道文件太大了效率怎么样。
<?php
// 本类由系统自动生成,仅供测试用途
class IndexAction extends Action {
    public function index(){
        $this->display();
    }

    Public function upload(){
        import('ORG.Net.UploadFile');
        $upload = new UploadFile();// 实例化上传类
        $upload->maxSize  = 3145728 ;// 设置附件上传大小
        $upload->allowExts  = array('xls','xlsx','csv');// 设置附件上传类型
        $upload->savePath =  './Public/Uploads/';// 设置附件上传目录
         if(!$upload->upload()) {// 上传错误提示错误信息
        $this->error($upload->getErrorMsg());
         }else{// 上传成功 获取上传文件信息
        $info =  $upload->getUploadFileInfo();
         }
        
         //加载第三方类库PHPExcel
         vendor('phpexcel.PHPExcel');
         vendor('phpexcel.PHPExcel.IOFactory');
         vendor('phpexcel.PHPExcel.Reader.Excel5');
         vendor('phpexcel.PHPExcel.Reader.Excel2007');
         
         // 加载excel文件
         $inputfilename=$info[0]['savepath'].$info[0]['savename'];
         $extension=$info[0]['extension'];
         switch ($extension) {
             case 'xls':
                 $objReader = new PHPExcel_Reader_Excel5();
                 break;
             case 'xlsx':
                 $objReader = new PHPExcel_Reader_Excel2007();
                 break;
             case 'csv':
                 $objReader = new PHPExcel_Reader_CSV();
                 break;
             default:
                 $this->error('上传的文件类型不匹配');
                 break;
             }
         
         $objPHPExcel = $objReader->load($inputfilename);
         $currentsheet = $objPHPExcel->getActiveSheet();//获取活动工作薄
         $allcolumn = $currentsheet->getHighestColumn();//获取最大列数
         $allrow = $currentsheet->getHighestRow();//获取最大行数
         $allcolumnindex = PHPExcel_Cell::columnIndexFromString($allcolumn);//将列数的字母索引转换成数字
         //建立模型
         $data = M('data');
         //读取excel文件中的数据
         for($row=2;$row<=$allrow;$row++){
             $str=array();
             for($column=0;$column<$allcolumnindex;$column++){
                 $str[$column]=$currentsheet->getCellByColumnAndRow($column,$row)->getValue();                 
             }
             //赋值到数组中
             $record=array(
                 'username' => $str[0],
                 'password' => $str[1],
                 'idcard' => $str[2],
                 );
            //把数据插入到数据库中
             $data->create($record);
             $data->add();
         }

     }
}
dd