选择当天一周一月导出excel表格

/**

* 导出

* @param

* @param

* @return*/publicfunction exportexcel()

{set_time_limit(0);ini_set('memory_limit', '1024M');

vendor("PHPExcel.PHPExcel.PHPExcel");

vendor("PHPExcel.PHPExcel.Writer.IWriter");

vendor("PHPExcel.PHPExcel.Writer.Abstract");

vendor("PHPExcel.PHPExcel.Writer.Excel5");

vendor("PHPExcel.PHPExcel.Writer.Excel2007");

vendor("PHPExcel.PHPExcel.IOFactory");//$data = Db::table('enroll_activity_hotel')->where('is_del', '0')->field('name,address,phone,departure_time,two_room,three_room')->select();$name= '酒店列表';$excel=new\PHPExcel();//引用phpexceliconv('UTF-8', 'gb2312',$name);//针对中文名转码$header= ['酒店名称', '酒店地址', '酒店电话', '发车时间', '两人间数', '三人间数'];//表头,名称可自定义$excel->setActiveSheetIndex(0);$excel->getActiveSheet()->setTitle($name);//设置表名$excel->getActiveSheet()->getDefaultRowDimension()->setRowHeight(18);$excel->getActiveSheet()->getColumnDimension('A')->setWidth(30);$excel->getActiveSheet()->getColumnDimension('B')->setWidth(30);$excel->getActiveSheet()->getColumnDimension('C')->setWidth(30);$excel->getActiveSheet()->getColumnDimension('D')->setWidth(30);$excel->getActiveSheet()->getColumnDimension('E')->setWidth(30);$excel->getActiveSheet()->getColumnDimension('F')->setWidth(30);$letter=array('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', 'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'AG', 'AH', 'AI', 'AJ', 'AK', 'AL', 'AM', 'AN', 'AO', 'AP', 'AQ', 'AR', 'AS', 'AT', 'AU', 'AV', 'AW', 'AX', 'AY', 'AZ');//生成表头for($i= 0;$igetActiveSheet()->setCellValue("$letter[$i]1",$header[$i]);//设置表头字体样式$excel->getActiveSheet()->getStyle("$letter[$i]1")->getFont()->setName('宋体');//设置表头字体大小$excel->getActiveSheet()->getStyle("$letter[$i]1")->getFont()->setSize(14);//设置表头字体是否加粗$excel->getActiveSheet()->getStyle("$letter[$i]1")->getFont()->setBold(true);//设置表头文字水平居中$excel->getActiveSheet()->getStyle("$letter[$i]1")->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);//设置文字上下居中$excel->getActiveSheet()->getStyle($letter[$i])->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);//设置单元格背景色$excel->getActiveSheet()->getStyle("$letter[$i]1")->getFill()->getStartColor()->setARGB('FFFFFFFF');$excel->getActiveSheet()->getStyle("$letter[$i]1")->getFill()->setFillType(\PHPExcel_Style_Fill::FILL_SOLID);$excel->getActiveSheet()->getStyle("$letter[$i]1")->getFill()->getStartColor()->setARGB('FF6DBA43');//设置字体颜色$excel->getActiveSheet()->getStyle("$letter[$i]1")->getFont()->getColor()->setARGB('FFFFFFFF');

}//写入数据$count= Db::table('enroll_activity_hotel')->where('is_del', '0')->count('id');$nums=ceil($count/ 2000);for($i= 0;$i<$nums; ++$i) {$data= Db::table('enroll_activity_hotel')->where('is_del', '0')->field('name,address,phone,departure_time,two_room,three_room')->limit(($i* 2000) . ',' . (2000))->select();if(!empty($data)) {$param=$i* 2000;//写入数据foreach($dataas$k=>$v) {$n=$param+$k+ 2;//列字体居中$excel->getActiveSheet()->getStyle('A' .$n)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);$excel->getActiveSheet()->getStyle('B' .$n)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);$excel->getActiveSheet()->getStyle('C' .$n)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);$excel->getActiveSheet()->getStyle('D' .$n)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);$excel->getActiveSheet()->getStyle('E' .$n)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);$excel->getActiveSheet()->getStyle('F' .$n)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);$excel->getActiveSheet()->getStyle('D')->getNumberFormat()->setFormatCode(\PHPExcel_Style_NumberFormat::FORMAT_TEXT);//从第二行开始写入数据(第一行为表头)$excel->getActiveSheet()->setCellValue('A' .$n,$v['name']);$excel->getActiveSheet()->setCellValue('B' .$n,$v['address']);$excel->getActiveSheet()->setCellValue('C' .$n,$v['phone']);$excel->getActiveSheet()->setCellValue('D' .$n,$v["departure_time"]);$excel->getActiveSheet()->setCellValue('E' .$n,$v['two_room']);$excel->getActiveSheet()->setCellValue('F' .$n,$v['three_room']);

}

} else {break;

}

}unset($data);//清理缓冲区,避免中文乱码ob_end_clean();//清除缓冲区,避免乱码header('Content-Type: application/vnd.ms-excel');header('Content-Disposition: attachment;filename="' .$name. '.xlsx"');header('Cache-Control: max-age=0');//导出数据$res_excel= \PHPExcel_IOFactory::createWriter($excel, 'Excel2007');$res_excel->save('php://output');

}

/**

* daoru

* @param

* @param

* @return*/publicfunction implodexcel()

{set_time_limit(0);if(!empty($_FILES)) {//获取表单上传文件if(!empty($_FILES['import']['error'])) {returnarray('status' => 0, 'msg' => '文件上传失败');

}$tmp_file=$_FILES['import'] ['tmp_name'];$file_types=explode(".",$_FILES['import'] ['name']);$file_type=$file_types[count($file_types) - 1];/*判别是不是.xls文件,判别是不是excel文件*/if(strtolower($file_type) != "xlsx" &&strtolower($file_type) != "xls") {$this->error('不是Excel文件,重新上传');

}/*设置上传路径*//*百度有些文章写的上传路径经过编译之后斜杠不对。不对的时候用大写的DS代替,然后用连接符链接就可以拼凑路径了。*/$savePath= ROOT_PATH . 'public' . DS . 'upload' . DS;/*以时间来命名上传的文件*/$str=date('Ymdhis');$file_name=$str. "." .$file_type;/*是否上传成功*/if(!copy($tmp_file,$savePath.$file_name)) {$this->error('上传失败');

}/**注意:这里调用执行了第三步类里面的read函数,把Excel转化为数组并返回给$res,再进行数据库写入*/$res=$this->read($savePath.$file_name, "UTF-8",$file_type);//传参,判断office2007还是office2003$uniques=array_filter(array_column($res, 0));$filpuni=array_flip(array_flip($uniques));if(count($uniques) !=count($filpuni)) {returnarray('status' => 0, 'msg' => "酒店名称有重复项,请处理后再导入");

}$datas= Db::table('enroll_activity_hotel')->where('is_del', '0')->field('id,name,address,phone,departure_time,two_room,three_room')->select();$anames= array_column($datas, 'name');$couludate= array_column($datas,null, 'name');//print_r($anames);die;Db::startTrans();try {/*对生成的数组进行数据库的写入*/foreach($resas$k=>$v) {//如果导入数据为空,跳过if(empty(array_filter($v))) {continue;

}if($k> 1) {$mblength= mb_strlen($v[0], 'UTF8');if($mblength> 50 ||$mblength< 1) {

Db::rollback();returnarray('status' => 0, 'msg' => '酒店名' .$v[0] . ':字符长度不符请控制在2-50字符以内');

}$pholength= mb_strlen($v[2], 'UTF8');if($pholength> 20 ||$pholength< 1) {

Db::rollback();returnarray('status' => 0, 'msg' => '酒店' .$v[0] . ':电话长度不符');

}if(!is_numeric($v[2])) {

Db::rollback();returnarray('status' => 0, 'msg' => '酒店' .$v[0] . ':电话必须为数字');

}$adreslength= mb_strlen($v[1], 'UTF8');if($adreslength> 100 ||$adreslength< 1) {

Db::rollback();returnarray('status' => 0, 'msg' => '酒店' .$v[0] . ':地址长度不符');

}$timelength= mb_strlen($v[3], 'UTF8');if($timelength> 20 ||$timelength< 1) {

Db::rollback();returnarray('status' => 0, 'msg' => '酒店' .$v[0] . ':发车时间长度不符');

}$toromlength= mb_strlen($v[4], 'UTF8');$treromlength= mb_strlen($v[5], 'UTF8');if($toromlength< 1 ||$treromlength< 1) {

Db::rollback();returnarray('status' => 0, 'msg' => '酒店' .$v[0] . ':房间数必须填写,没有请填写数字为0');

}if(!is_numeric($v[4])) {

Db::rollback();returnarray('status' => 0, 'msg' => '酒店' .$v[0] . ':房间数必须为数字');

}if(!is_numeric($v[5])) {

Db::rollback();returnarray('status' => 0, 'msg' => '酒店' .$v[0] . ':房间数必须为数字');

}$isexit=array_search($v[0],$anames);if(false===$isexit) {$data[$k]['name'] =$v[0];$data[$k]['address'] =$v[1];$data[$k]['phone'] =$v[2];$data[$k]['departure_time'] =$v[3];$data[$k]['two_room'] =$v[4];$data[$k]['three_room'] =$v[5];$data[$k]['is_open'] = 1;$data[$k]['add_admin_id'] = session('user.id');$data[$k]['add_time'] =time();$data[$k]['update_admin_id'] = session('user.id');$data[$k]['update_time'] =time();

} else {//如果数据表中有本账户,判断他最新导入的表格是否修改过信息if($couludate[$v[0]]['address'] !=$v[1] ||$couludate[$v[0]]['phone'] !=$v[2] ||$couludate[$v[0]]['departure_time'] !=$v[3] ||$couludate[$v[0]]['two_room'] !=$v[4] ||$couludate[$v[0]]['three_room'] !=$v[5]) {$dataup[$k]['id'] =$couludate[$v[0]]['id'];$dataup[$k]['address'] =$v[1];$dataup[$k]['phone'] =$v[2];$dataup[$k]['departure_time'] =$v[3];$dataup[$k]['two_room'] =$v[4];$dataup[$k]['three_room'] =$v[5];$dataup[$k]['update_admin_id'] = session('user.id');$dataup[$k]['update_time'] =time();

}

}

}

}if(isset($dataup) ||isset($data)) {//如果有更新的数据,批量更新if(isset($dataup)) {foreach($dataupas$key=>$value) {$updas= Db::table('enroll_activity_hotel')->where('id',$value['id'])->update($value);if(!$updas) {

Db::rollback();returnarray('status' => 0, 'msg' =>$e->getMessage());

}

}

}if(isset($data)) {//插入的操作最好放在循环外面$result= Db::table('enroll_activity_hotel')->insertAll($data);if(!$result) {

Db::rollback();returnarray('status' => 0, 'msg' =>$e->getMessage());

}

}

Db::commit();returnarray('status' => 1, 'msg' => "导入成功");

} else {

Db::rollback();returnarray('status' => 0, 'msg' => "重复导入");

}

} catch(\Exception$e) {

Db::rollback();returnarray('status' => 0, 'msg' =>$e->getMessage());

}

}

}/**

* 导入方法附属方法

* @param

* @param

* @return*/publicfunctionread($filename,$encode,$file_type)

{

vendor("PHPExcel.PHPExcel.PHPExcel");

vendor("PHPExcel.PHPExcel.Writer.IWriter");

vendor("PHPExcel.PHPExcel.Writer.Abstract");

vendor("PHPExcel.PHPExcel.Writer.Excel5");

vendor("PHPExcel.PHPExcel.Writer.Excel2007");

vendor("PHPExcel.PHPExcel.IOFactory");if(strtolower($file_type) == 'xls')//判断excel表类型为2003还是2007{

Vendor("Excel.PHPExcel.Reader.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;

}


Excel   数据透视表课程   视频教程下载地址:https://306t.com/file/686368-477370814


更多资源下载地址:https://z701.com/f/686368-485346643-6740b7

(访问密码:4939)

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

推荐阅读更多精彩内容