1、安装phpexcel
composer require “phpoffice/phpexcel”
php版本:7.2(官方写的是5.4-7.0,7.2也可以完美的支持,7.3需要更改vender下的一段代码才可以支持导出)
/*
php7.3版本支持需要如下修改
vendor/phpoffice/phpexcel/Classes/PHPExcel/Shared/OLE.php 288行
将continue改成break
//代码如下
*/
switch ($type) {
case self::OLE_PPS_TYPE_ROOT:
$pps = new PHPExcel_Shared_OLE_PPS_Root(null, null, array());
$this->root = $pps;
break;
case self::OLE_PPS_TYPE_DIR:
$pps = new PHPExcel_Shared_OLE_PPS(null, null, null, null, null, null, null, null, null, array());
break;
case self::OLE_PPS_TYPE_FILE:
$pps = new PHPExcel_Shared_OLE_PPS_File($name);
break;
default:
continue;//将这个continue改成break就行了
}
2、需要支持的扩展
php -m //查看一下是否有zip的扩展,这个是必须的吧
### 3、导入excel源码
```php
$objReader = \PHPExcel_IOFactory::load($filename);
$sheetData = $objReader->getActiveSheet()->toArray(null, true, true, true);
$sheetNames = $objReader->getSheetNames();
if (empty($sheetNames)) {
return $this->setCode(500)->message('excel表格解析错误');
}
foreach ($sheetData as $line => $row) {
if ($line < 3) {
continue;
}
if (empty($row) || empty(array_filter($row))) {
continue;
}
$totalCount++;
// 解析导入的数据,您可以var_dump一下 $row的值
}
4、导出excel
$objPHPExcel = new \PHPExcel();
$objActSheet = $objPHPExcel->getActiveSheet();
$objActSheet->setTitle('导入失败学员'.date('Y-m-d', time()));
$sheet = $objPHPExcel -> getActiveSheet();
$sheet -> setCellValue("A1",'学生姓名');
$sheet -> setCellValue("B1",'电话');
$sheet -> setCellValue("C1",'课程名称');
$count = count($downdata);
$outputFileName = '导入失败学员'.date('Y-m-d', time()).'.xls';
// 设置当前激活的sheet表格名称;
$objPHPExcel->getActiveSheet()->setTitle('人员名单');
// 设置浏览器窗口下载表格
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
header('Content-Disposition:inline;filename="'.$outputFileName.'"');
// 生成excel文件
$objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
// 下载文件在浏览器窗口
$objWriter->save('php://output');
5、写入excel文件
$objExcel = new \PHPExcel();
$objWriter = new \PHPExcel_Writer_Excel2007($objExcel);
// 设置当前sheet名字
$objActSheet = $objExcel->getActiveSheet();
$objActSheet->setTitle('导入失败学员'.date('Y-m-d', time()));
$objActSheet->setCellValue("A1",'学生姓名');
$objActSheet->setCellValue("B1",'电话');
$objActSheet->setCellValue("C1",'课程名称');
$savePath = dirname(__DIR__).'/../excel/';
// 判断存储文件是否存在 不存在则创建
if (!file_exists($savePath)) {
mkdir($savePath, 0777, true);
}
// 存储Excel
$objWriter->save("{$savePath}示例Excel.xlsx");
简单的介绍下规律问题,excel打开之后默认的会有行和列的概念,第一列为A,以此类推,一行为1,所以第一列第一行为A1,第一列第二行为A2。第一行第二列为B1…