导出:
$contents = [
0 => [
'name' => '姓名',
],
];//此处可填写数据库查出得数据
$xlsCell = array(
array('name','姓名'),
);
exportExcel('证书列表(相关信息没有的可以留空)',$xlsCell,$contents,'example');
function exportExcel($expTitle,$expCellName,$expTableData,$fileName=''){
$xlsTitle = iconv('utf-8', 'gb2312', $expTitle);
if ($fileName == '') {
$fileName = date('_YmdHis');
}
$cellNum = count($expCellName);
$dataNum = count($expTableData);
vendor("PHPExcel.PHPExcel");
$objPHPExcel = new PHPExcel();
$cellName = 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');
// $objPHPExcel->getActiveSheet(0)->mergeCells('A1:'.$cellName[$cellNum-1].'1');
// $objPHPExcel->setActiveSheetIndex(0)->setCellValue('A1', $expTitle.' Export time:'.date('Y-m-d H:i:s'));
$objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(40);
$objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(15);
$objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(20);
$objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(30);
$objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(30);
$objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth(30);
$objPHPExcel->getActiveSheet()->getColumnDimension('G')->setWidth(80);
for($i=0;$i<$cellNum;$i++){
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$i].'2', $expCellName[$i][1]);
}
for($i=0;$i<$dataNum;$i++){
for($j=0;$j<$cellNum;$j++){
$objPHPExcel->getActiveSheet(0)->setCellValue($cellName[$j].($i+3), $expTableData[$i][$expCellName[$j][0]]);
}
}
ob_end_clean();//清除缓冲区,避免乱码
header('Cache-Control: max-age=0');
header('Content-type:application/vnd.ms-excel;charset=utf-8;name="'.$xlsTitle.'.xls"');
header("Content-Disposition:attachment;filename=$fileName.xls");
header('pragma:public');
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save('php://output');
exit;
}
导入:
public function import(Request $request)
{
if($request->isPost()){
if(empty($request->file('file'))){
echo '<script>alert("请先上传文件!")</script>';
echo '<script>window.location.href="/admin/none/index";</script>';
}
if($_FILES['file']['type'] != 'application/vnd.ms-excel'){
echo '<script>alert("上传文件类型错误!")</script>';
echo '<script>window.location.href="/admin/none/index";</script>';
}
$filename = $request->file('file')->getPathname();
$a = $request->file('file');
vendor('PHPExcel.PHPExcel');
date_default_timezone_set('PRC');
$objReader = \PHPExcel_IOFactory::createReader('Excel5');
$objPHPExcel = $objReader->load($filename); //$filename可以是上传的表格,或者是指定的表格
$sheet = $objPHPExcel->getSheet(0);
$highestRow = $sheet->getHighestRow(); // 取得总行数
$highestColumm = $sheet->getHighestColumn();
for ($j = 2; $j <= $highestRow; $j++) {
$data[$j]['name'] = $objPHPExcel->getActiveSheet()->getCell("A" . $j)->getValue();//证书人姓名
$data[$j]['number'] = $objPHPExcel->getActiveSheet()->getCell("B" . $j)->getValue();//证书人编号
$data[$j]['cert_name'] = $objPHPExcel->getActiveSheet()->getCell("C" . $j)->getValue();//证书名称
$data[$j]['class_time'] = $objPHPExcel->getActiveSheet()->getCell("D" . $j)->getValue();//学时
$data[$j]['unit'] = $objPHPExcel->getActiveSheet()->getCell("E" . $j)->getValue();//颁发单位
$data[$j]['times'] = $objPHPExcel->getActiveSheet()->getCell("F" . $j)->getValue();//颁发时间
$data[$j]['add'] = $objPHPExcel->getActiveSheet()->getCell("G" . $j)->getValue();//相关信息
}
array_shift($data);//删除第一个数组
if(Db::name('table')->insertAll($data)){
echo '<script>alert("导入成功");</script>';
echo '<script>window.location.href="/admin/none/index";</script>';
die();
}else{
echo '<script>alert("导入失败");</script>';
echo '<script>window.location.href="/admin/none/index";</script>';
die();
}
}
}