phpexcel的导入导出源码

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…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值