index.php getActiveSheet()-setCellValue(chr($asiStart + $i) . 1, $column[$i]); } if (!empty($result)) { $startIndex = 2; foreach ($result as $row) { $objPHPExcel-setActiveSheetIndex(0)-setCellValue('A'.$startIndex, $row['mobile']); $startIn
getActiveSheet()->setCellValue(chr($asiStart + $i) . 1, $column[$i]); } if (!empty($result)) { $startIndex = 2; foreach ($result as $row) { $objPHPExcel->setActiveSheetIndex(0)->setCellValue('A'.$startIndex, $row['mobile']); $startIndex++; } } $objPHPExcel->getActiveSheet()->getDefaultColumnDimension()->setWidth(20);//设置excel宽度 //$objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(20);//设置某列的宽度 // Redirect output to a client’s web browser (Excel2007) $fileName = date("Y-m-d H:i:s", REQUEST_TIME) . ".xlsx"; header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); header('Content-Disposition: attachment;filename="' . $fileName . '"'); header('Cache-Control: max-age=0'); // If you're serving to IE 9, then the following may be needed header('Cache-Control: max-age=1'); // If you're serving to IE over SSL, then the following may be needed header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); // always modified header('Cache-Control: cache, must-revalidate'); // HTTP/1.1 header('Pragma: public'); // HTTP/1.0 $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); $objWriter->save('php://output'); exit; ?>OtherController.php
namespace Admin\Controller; class OtherController extends AdminController { /** * onethink中Excel导出导入 * 下载PHPexcel第三方库放入ThinkPHP\Library\Vendor中 */ //导入 public function importExcel(){ header('Content-Type:text/html;charset=utf-8'); if ( isset($_FILES['files']) && !empty($_FILES['files']) ) { if ( !$_FILES['files']['name'] || empty($_FILES['files']['name']) ){ $this->error("请选择上传的文件"); } $extensions = array('xlsx','xls','csv'); $arr = explode(".", $_FILES['files']['name']); $extend = end($arr); if ( !in_array($extend, $extensions) ) { $this->error("文件格式不对,请上传xls,xlsx格式的文件"); } $files = Request::instance()->file('files'); $file_dir = ROOT_PATH . 'public' . DS . 'data/voucherTemplate/'; $file_name = $_FILES['files']['name']??""; $info = $files->move($file_dir, $file_name); $file_path = ""; if( $info ){ $file_name = str_replace("\\", "/", $info->getSaveName()); $file_path = $file_dir . $file_name; }else{ echo $files->getError(); exit(); } vendor ( 'PHPExcel' ); vendor ( 'PHPExcel.PHPExcel_IOFactory' ); switch (strtolower ( $extend )) { case 'csv' : vendor ( 'PHPExcel.Reader.CSV' ); $format = 'CSV'; $objReader = \PHPExcel_IOFactory::createReader ( $format )->setDelimiter ( ',' )->setInputEncoding ( 'GBK' )->setEnclosure ( '"' )->setLineEnding ( "\r\n" )->setSheetIndex ( 0 ); break; case 'xls' : vendor ( 'PHPExcel.Reader.Excel5' ); $format = 'Excel5'; $objReader = \PHPExcel_IOFactory::createReader ( $format ); break; default : vendor ( 'PHPExcel.Reader.Excel2007' ); $format = 'excel2007'; $objReader = \PHPExcel_IOFactory::createReader ( $format ); } $objReader->setReadDataOnly(true); $objPHPExcel = $objReader->load($file_path); $objWorksheet = $objPHPExcel->getActiveSheet(); $highestRow = $objWorksheet->getHighestRow(); $highestColumn = $objWorksheet->getHighestColumn(); $highestColumnIndex = \PHPExcel_Cell::columnIndexFromString($highestColumn); //事物 $flag = false; Db::startTrans(); //第1行A列起 for($i=3; $i<=$highestRow; $i++){ $data = array(); for($j= 'A'; $j< $highestColumn; $j++){ $data[] = $objPHPExcel->getActiveSheet()->getCell("$j$i")->getValue(); } $result = $this->_model->insertData($data); if ( $result && $result['code'] == 100 ){ $false = true; }else { $flag = false; Db::rollback(); $this->error( $result['msg'] ); } } if ( !$false ){ Db::rollback(); $this->error( $result['msg'] ); } Db::commit(); $this->success('导入成功!'); }else{ $this->error("请选择上传的文件"); } } public function exportExcel(){ $expCellName = array('场地名','优惠券名称','优惠券类型','天数','折扣','开始时间', '结束时间', '优惠内容'); //导出的数据格式 $expTableData = array( array('浦东', '5天优惠券', '天数券', '5', '', '2017-11-20 09:00:00', '2018-02-18 22:00:00', '5天优惠券的优惠内容'), array('虹桥', '8折优惠券', '折扣券', '', '0.8', '2017-11-20 09:00:00', '2018-02-18 22:00:00', '8折优惠券的优惠内容'), ); $expTitle = "优惠券模板"; $xlsTitle = iconv('utf-8', 'gb2312', $expTitle);//文件名称 $fileName = 'voucher_template';//or $xlsTitle 文件名称可根据自己情况设定 $cellNum = count($expCellName); //多少列 $dataNum = count($expTableData); //多少行 Vendor("PHPExcel"); $objPHPExcel = new \PHPExcel(); //初始化 $cellName = array('A','B','C','D','E','F','G','H'); //标题 $objPHPExcel->setActiveSheetIndex(0)->setCellValue('A1', $expTitle);//标题 $objPHPExcel->getActiveSheet(0)->mergeCells('A1:'.$cellName[$cellNum-1].'1');//合并单元格 $objPHPExcel->getActiveSheet()->getRowDimension(1)->setRowHeight(30);//设置标题行高 $objPHPExcel->getActiveSheet()->getStyle('A1:I1')->getFont()->setName('微软雅黑'); $objPHPExcel->getActiveSheet()->getStyle('A1:I1')->getFont()->setSize(16); $objPHPExcel->getActiveSheet()->getStyle('A1:I1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);//标题水平居中 $objPHPExcel->getActiveSheet()->getStyle('A1:I1')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);//标题垂直居中 //底部注意事项 $attention = "注意事项:"; $objPHPExcel->setActiveSheetIndex(0)->setCellValue('A5', $attention); $objPHPExcel->getActiveSheet(0)->mergeCells('A5:'.$cellName[$cellNum-1].'5');//合并单元格 $objPHPExcel->getActiveSheet()->getRowDimension(5)->setRowHeight(20);//设置标题行高 $objPHPExcel->getActiveSheet()->getStyle('A5:I5')->getFont()->setSize(14); $objPHPExcel->getActiveSheet()->getStyle('A5:I5')->getFont()->setColor(\PHPExcel_Style_Color::indexedColor(3));//设置颜色,颜色值可查看对应的indexedColor方法 //列表水平、垂直居中 $objPHPExcel->setActiveSheetIndex()->getDefaultStyle()->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);//所有水平居中 $objPHPExcel->setActiveSheetIndex()->getDefaultStyle()->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);//所有垂直居中 //设置宽度 foreach ( $cellName as $key=>$value){ $objPHPExcel->getActiveSheet()->getRowDimension($key+1)->setRowHeight(20); $objPHPExcel->getActiveSheet()->getColumnDimension($value)->setWidth(20); $objPHPExcel->setActiveSheetIndex(0)->setCellValue($value.'2', $expCellName[$key]); //表头(列名) } //设置行高 foreach ( $expTableData as $key=>$value ){ $objPHPExcel->getActiveSheet()->getRowDimension($key+2)->setRowHeight(30); } //输出数据 for($i=0;$i<$dataNum;$i++){ for($j=0;$j<$cellNum;$j++){ $objPHPExcel->getActiveSheet(0)->setCellValue($cellName[$j].($i+3), $expTableData[$i][$j]); //内容 } } header('pragma:public'); header('Content-type:application/vnd.ms-excel;charset=utf-8;name="'.$xlsTitle.'.xlsx"'); header("Content-Disposition:attachment;filename=$fileName.xlsx");//attachment新窗口打印inline本窗口打印 $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); $objWriter->save('php://output'); exit; } }