1. 前端数组形式
[{
  "筑创星": "景宁筑商刘丹商务服务工作室",
  "姓名": "刘丹",
  "手机号": "15686868000",
  "任务报名时间": "2020-01-06 12:00:05",
  "申请验收时间": "2020-01-06 12:00:06",
  "验收时间": "2020-01-06 12:00:07",
  "验收时间范围": "2020-01-06 至 2020-02-03",
  "结算任务佣金": "2999"
}]
  1. JSON.stringify()转json字符串
  2. 后端接口使用PHPExcel实例:将表格存储到服务器,然后返回一个链接提供下载
public function dataExportExcel($data = [],$name = '结算单') {
    $data = isset($_REQUEST['data']) ? $_REQUEST['data'] : ''; // 获取表格数据,json编码后的
    $data = json_decode($data);
    $excel = new \PHPExcel(); //引用phpexcel
    iconv('UTF-8', 'gb2312', $name); //针对中文名转码
    // 设置单元格居中对齐
    $excel->getDefaultStyle()->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
    $excel->setActiveSheetIndex(0);
    $excel->getActiveSheet()->setTitle($name); //设置表名
    $excel->getActiveSheet()->getDefaultRowDimension()->setRowHeight(18);
    $excel->getActiveSheet()->getColumnDimension('B')->setWidth(80);
    // $excel->getActiveSheet()->freezePaneByColumnAndRow(1,1);//冻结首列
    $excel->getActiveSheet()->protectCells('A1:A2', 'order_id');
    //受保护的地址列
    //$excel->getActiveSheet()->protectCells('A1:A7', 'password');
    //解除指定列锁定
    // $excel->getActiveSheet()->getStyle('B1:B7')->getProtection()->setLocked(\PHPExcel_Style_Protection::PROTECTION_UNPROTECTED);
    $excel->getActiveSheet()->getStyle('H')->getProtection()->setLocked(\PHPExcel_Style_Protection::PROTECTION_UNPROTECTED);
    //设置sheet锁定属性
    $excel->getActiveSheet()->getProtection()->setSheet(true);
    // 设置单元格的宽度
    $excel->getActiveSheet()->getColumnDimension('A')->setWidth(30);#设置单元格宽度
    $excel->getActiveSheet()->getColumnDimension('B')->setWidth(10);#设置单元格宽度
    $excel->getActiveSheet()->getColumnDimension('C')->setWidth(15);#设置单元格宽度
    $excel->getActiveSheet()->getColumnDimension('D')->setWidth(20);#设置单元格宽度
    $excel->getActiveSheet()->getColumnDimension('E')->setWidth(20);#设置单元格宽度
    $excel->getActiveSheet()->getColumnDimension('F')->setWidth(20);#设置单元格宽度
    $excel->getActiveSheet()->getColumnDimension('G')->setWidth(30);#设置单元格宽度
    $excel->getActiveSheet()->getColumnDimension('H')->setWidth(15);#设置单元格宽度
    //设置表头
    $excel->setActiveSheetIndex(0)
        ->setCellValue('A1', '筑创星')
        ->setCellValue('B1', '姓名')
        ->setCellValue('C1', '手机号')
        ->setCellValue('D1', '任务报名时间')
        ->setCellValue('E1', '申请验收时间')
        ->setCellValue('F1', '验收时间')
        ->setCellValue('G1', '验收时间范围')
        ->setCellValue('H1', '结算任务佣金');
    foreach ($data as $k => $v) {
        //从第二行开始写入数据(第一行为表头)
        //$excel->getActiveSheet()->setCellValue('A'.($k+2),$v['gid']);
        // $excel->getActiveSheet()->setCellValue('A' . ($k + 2), $v['id']."\t");
        $excel->getActiveSheet()->setCellValue('A' . ($k + 2), $v->筑创星."\t");
        $excel->getActiveSheet()->setCellValue('B' . ($k + 2), $v->姓名);
        $excel->getActiveSheet()->setCellValue('C' . ($k + 2), $v->手机号 ?: '');
        $excel->getActiveSheet()->setCellValue('D' . ($k + 2), $v->任务报名时间);
        $excel->getActiveSheet()->setCellValue('E' . ($k + 2), $v->申请验收时间);
        $excel->getActiveSheet()->setCellValue('F' . ($k + 2), $v->验收时间);
        $excel->getActiveSheet()->setCellValue('G' . ($k + 2), $v->验收时间范围);
        $excel->getActiveSheet()->setCellValue('H' . ($k + 2), $v->结算任务佣金);
    }
    //设置单元格边框
    $excel->getActiveSheet()->getStyle("A1:E9")->getBorders()->getAllBorders()->setBorderStyle();
    ob_end_clean();
    header('Content-Type: application/vnd.ms-excel');
    header('Content-Disposition: attachment;filename="' . $name . '.xls"');
    header('Cache-Control: max-age=0');
    $res_excel = PHPExcel_IOFactory::createWriter($excel, 'Excel2007');
    $res_excel->save('php://output');
}
PHPExcel额外的方法(关于设置表格属性的)

PHPExcel-设置表格字体颜色背景样式、数据格式、对齐方式、添加图片、批注、文字块、合并拆分单元格、单元格密码保护等等

关于报错
  1. PHPExcel生成Excel文件—提示Class 'PHPExcel_Style_Alignment' not found 解决方案:在PHPExcel_Style_AlignmentPHPExcel_Style_Border 前面加上\符号
  2. $objPHPExcel->getActiveSheet()->getStyle(‘A‘)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
小技巧
  1. 关于导出长数字自动变成科学计数法的问题
    解决方案:$objActSheet->setCellValueExplicit('A5','8757584',PHPExcel_Cell_DataType::TYPE_STRING); 关键点:
    1. 使用setCellValueExplicit而不是setCellValue 因为,setCellValue方法不支持手动指定数据类型,需要手动去源码进行修改,比较麻烦,如果有想法可以参考这篇文章
    2. setCellValueExplicit方法中第三个参数使用PHPExcel_Cell_DataType::TYPE_STRING指定数据类型,如果报错说PHPExcel_Cell_DataType找不到,那么使用\PHPExcel_Cell_DataType::TYPE_STRING即可(在前面加上反斜杠)
    3. 如果是超长数字的话,这种方法还是不能够解决问题的(但其实一般情况下都够用了)。那么就只能在数据前面手动拼接一个空格,这样就一定是一个字符串了