PHP excel 表格导入导出

导出:

$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();
          }            
        } 
      }

猜你喜欢

转载自blog.csdn.net/weixin_38738277/article/details/80832086