phpexcel数据导出分多个工作区(sheet)

1、数据源

$expTableData1 = [
            [['name' => 'ddd' , 'age' => 12] , ['name' => 'yyy' , 'age' => 13] , ['name' => 'hhh' , 'age' => 14]],
            [['hobby' => 'aaa' , 'sex' => '女'] , ['hobby' => 'uuu' , 'sex' => '男'] , ['hobby' => 'kkk' , 'sex' => '女']],
            [['address' => 'ccc' , 'birth' => '12-13'] , ['address' => 'ccc' , 'birth' => '6-4'] , ['address' => 'ccc' , 'birth' => '9-6']]
        ];

2、导出Excel(此方法最好写在common文件夹下,infoExcel.php)

function exportExcel($expTitle,$expCellName,$expTableData,$sheetName,$tableHeader='',$defaultWidth=15)
{
    /**文件名称*/
    $xlsTitle = iconv('utf-8', 'gb2312', $expTitle);
    $fileName = $expTitle.date('_YmdHis');
    $cellNum = count($expCellName);

    /** 实例化 */
    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');

    /** 缺省情况下,PHPExcel会自动创建第一个SHEET,其索引SheetIndex=0 */
    /** 设置 当前处于活动状态的SHEET 为PHPExcel自动创建的第一个SHEET */
    foreach($expTableData as $key => $item) {
        if($key !== 0) $objPHPExcel->createSheet();
        $objPHPExcel->setactivesheetindex($key);
        /** 设置工作表名称 */
        $objPHPExcel->getActiveSheet($key)->setTitle($sheetName[$key]);

        for($i = 0; $i < $cellNum; $i++)
        {
            /** 垂直居中 */
            $objPHPExcel->setActiveSheetIndex($key)->getStyle($cellName[$i])->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
            /** 水平居中 */
            $objPHPExcel->setActiveSheetIndex($key)->getStyle($cellName[$i])->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
            /** 设置默认宽度 */
            $objPHPExcel->setActiveSheetIndex($key)->getColumnDimension($cellName[$i])->setWidth($defaultWidth);
            $objPHPExcel->setActiveSheetIndex($key)->setCellValue($cellName[$i].'1', $expCellName[$i][1]);
        }

        /** 写入多行数据 */
        for($i = 0; $i < count($item); $i++)
        {
            for($j = 0; $j < $cellNum; $j++)
            {
              $objPHPExcel->getActiveSheet($key)->setCellValue($cellName[$j].($i+2), $item[$i][$expCellName[$j][0]]);
            }
        }
    }

    /** 设置第一个工作表为活动工作表 */
    $objPHPExcel->setactivesheetindex(0);
    @header('pragma:public');
    @header('Content-type:application/vnd.ms-excel;charset=utf-8;name="'.$xlsTitle.'.xls"');
    @header("Content-Disposition:attachment;filename=$fileName.xls");//attachment新窗口打印inline本窗口打印
    $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
    $objWriter->save('php://output');
    exit;

3、调用

load("@.infoExcel");
exportExcel($xlsName, $xlsCell, $dataArr, $sheetName , $title);


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值