paginate(10);
// 分配数据
// 跳转页面
return $this->fetch('index',compact('list'));
}
// 导入
public function import(){
// 符合类型
$file = request()->file('image');
// 移动到框架应用根目录/public/uploads/ 目录下
if($file){
$info = $file->move(ROOT_PATH . 'public' . DS . 'uploads');
if($info){
// 成功上传后 获取上传信息
// 输出 jpg
// echo $info->getExtension();
// 输出 20160820/42a79759f284b767dfcb2a0197904287.jpg
// echo $info->getSaveName();
// 输出 42a79759f284b767dfcb2a0197904287.jpg
if(!$info) { // 上传错误提示错误信息
$this->error($info->getError());
die();
}else{ // 上传成功
// 读取文件
$filename=ROOT_PATH . 'public' . DS . 'uploads'. DS .$info->getSaveName();
// var_dump($filename);
// die();
Vendor('PHPExcel.Classes.PHPExcel');
Vendor('PHPExcel.PHPExcel.Classes.IOFactory');
$reader = \PHPExcel_IOFactory::createReader('Excel2007'); //设置以Excel5格式(Excel97-2003工作簿)
$PHPExcel = $reader->load($filename, $encode = 'utf-8'); // 载入excel文件
$num = $PHPExcel->getSheetCount();
$names = $PHPExcel->getSheetNames();
for($a=0;$a<$num;$a++){
$sheet = $PHPExcel->getSheet($a); // 读取第一個工作表
$highestRow = $sheet->getHighestRow(); // 取得总行数
$highestColumm = $sheet->getHighestColumn(); // 取得总列数
++$highestColumm;
$data = array();
$k=1;
for ($row = 2; $row <= $highestRow; $row++){//行数是以第1行开始
for ($currentColumn = 'B'; $currentColumn !=$highestColumm; $currentColumn++) {
//数据坐标
$address = $currentColumn.$row;
//读取到的数据,保存到数组$arr中
$count = $sheet->getCell($address)->getValue();
$name = $sheet->getCell($currentColumn.'1')->getValue();
$name = $this->trimall($name);
if(!empty($count) && !empty($name)){
++$k;
$data['count'] = $count;
$data['name'] = $name ;
$data['time'] = strtotime(date("Y-m-".$sheet->getCell('A'.$row)->getValue()));
$data['username'] = $names[$a];
$worldName = explode('-',$name);
if(!is_array($worldName)) $worldName = explode('_',$name);
// dump($data);
$strWorld = strtolower(count($worldName)==3?substr($worldName[1],0,1):($this->isAllChinese($name)?'未编码':'z'));
if(empty($strWorld)){
$data['sort_world'] = 'z';
}else{
$data['sort_world'] = $strWorld;
}
Db::name('cloth')->insert($data);
}
}
// die();
}
}
$this->success('导入数据库成功','index');
}
} else{ // 不符合类型业务
$this->error('不是excel文件,请重新上传...');
}
}else{
$this->error('(⊙o⊙)~没传数据就导入');
}
}
public function setExcel(){
$startTime = strtotime(date('Y-m-1'));
$endTime = strtotime(date('Y-m-20'));
$orderWorld= Db::name('cloth')->group('sort_world')->field('sort_world')->order('sort_world asc')->select();
$OrdersData= Db::name('cloth')->group('name')->field('sum(count) as total,name,sort_world')->where('time','>=',$startTime)->where('time','<=',$endTime)->order('sort_world asc')->select();
// 如果没有选中任何,则导出所有数据
$data = array();
foreach ($orderWorld as $k=>$value){
foreach ($OrdersData as $k1=>$v1){
if($v1['sort_world'] == $value['sort_world']){
$data[$k][$value['sort_world'].'区'][] = $OrdersData[$k1]['name'] ;
$data[$k]['合计'][] = $OrdersData[$k1]['total'];
}
}
}
// dump($OrdersData);
trace($OrdersData);
//导入phpexcel类方法
Vendor('PHPExcel.Classes.PHPExcel');
Vendor('PHPExcel.PHPExcel.Classes.IOFactory');
// Create new PHPExcel object
$objPHPExcel = new \PHPExcel();
// Set properties
$objPHPExcel->getProperties()->setCreator("ctos")
->setLastModifiedBy("ctos")
->setTitle("Office 2007 XLSX Test Document")
->setSubject("Office 2007 XLSX Test Document")
->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.")
->setKeywords("office 2007 openxml php")
->setCategory("Test result file");
// 水平居中(位置很重要,建议在最初始位置)
$objPHPExcel->setActiveSheetIndex(0)->getStyle('A')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->setActiveSheetIndex(0)->getStyle('B')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->setActiveSheetIndex(0)->getStyle('C')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->setActiveSheetIndex(0)->getStyle('D')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->setActiveSheetIndex(0)->getStyle('E')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->setActiveSheetIndex(0)->getStyle('F')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->setActiveSheetIndex(0)->getStyle('G')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->setActiveSheetIndex(0)->getStyle('H')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->setActiveSheetIndex(0)->getStyle('I')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->setActiveSheetIndex(0)->getStyle('J')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->setActiveSheetIndex(0)->getStyle('K')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
//
// 合并 A1 I1
// set table header content
//set width
$objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(8);
$objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(30);
$objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(15);
$objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(30);
$objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(12);
$objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth(12);
$objPHPExcel->getActiveSheet()->getColumnDimension('G')->setWidth(30);
$objPHPExcel->getActiveSheet()->getColumnDimension('H')->setWidth(12);
$objPHPExcel->getActiveSheet()->getColumnDimension('I')->setWidth(12);
$objPHPExcel->getActiveSheet()->getColumnDimension('J')->setWidth(12);
$objPHPExcel->getActiveSheet()->getColumnDimension('K')->setWidth(12);
// Miscellaneous glyphs, UTF-8
// for($i=0;$igetActiveSheet(0)->setCellValue('A'.($i+3), $OrdersData[$i]['uid']);
// $objPHPExcel->getActiveSheet(0)->setCellValue('B'.($i+3), $OrdersData[$i]['user_name']);
// $objPHPExcel->getActiveSheet(0)->setCellValue('C'.($i+3), $OrdersData[$i]['pwd']);
// $objPHPExcel->getActiveSheet(0)->setCellValue('D'.($i+3), $OrdersData[$i]['name']);
// $objPHPExcel->getActiveSheet()->getStyle('A'.($i+3).':D'.($i+3))->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
// $objPHPExcel->getActiveSheet()->getStyle('A'.($i+3).':D'.($i+3))->getBorders()->getAllBorders()->setBorderStyle(\PHPExcel_Style_Border::BORDER_THIN);
// $objPHPExcel->getActiveSheet()->getRowDimension($i+3)->setRowHeight(16);
// }
$a = 'A';
foreach ($data as $k => $v) {
foreach ($data[$k] as $k1 => $v1) {
$objPHPExcel->getActiveSheet(0)->setCellValue($a . '1', $k1);
foreach ($v1 as $key => $value) {
$objPHPExcel->getActiveSheet(0)->setCellValue($a . ($key + 2), $value);
}
++$a;
}
}
// sheet命名
$objPHPExcel->getActiveSheet()->setTitle('领取记录汇总表');
// Set active sheet index to the first sheet, so Excel opens this as the first sheet
$objPHPExcel->setActiveSheetIndex(0);
// excel头参数
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="2018.7.11-1-20.xls"'); //日期为文件名后缀
header('Cache-Control: max-age=0');
ob_clean();//关键
flush();//关键
$objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); //excel5为xls格式,excel2007为xlsx格式
$objWriter->save('php://output');
}
public function trimall($str)//删除空格
{
$qian=array(" "," ","\t","\n","\r");$hou=array("","","","","");
return str_replace($qian,$hou,$str);
}
public function isAllChinese($str){
//新疆等少数民族可能有·
if(strpos($str,'·')){
//将·去掉,看看剩下的是不是都是中文
$str=str_replace("·",'',$str);
if(preg_match('/^[\x7f-\xff]+$/', $str)){
return true;//全是中文
}else{
return false;//不全是中文
}
}else{
if(preg_match('/^[\x7f-\xff]+$/', $str)){
return true;//全是中文
}else{
return false;//不全是中文
}
}
}
}