excel多sheet导出

$post = I('get.');

//用户画像,9个分类同时导出,9个sheet
$dataAll = [];
$tagname = D('SpsTag')->where(['tag_category' => 3, 'tag_dict_id' => ['between', [1, 9]]])->getField('tag_dict_id,tag_dict_value');
foreach ($tagname as $k=>$v){
    $post['tag_3'] = $k;//用户画像
    $dataAll[$k] = D('UserTag', 'Service')->userTagLately($post);
}

Vendor('PHPExcel.IOFactory');
Vendor('PHPExcel.PHPExcel');
$objPHPExcel = new \PHPExcel();

$objPHPExcel->getProperties()->setCreator("Maarten Balliauw")
    ->setLastModifiedBy("Maarten Balliauw")
    ->setTitle("Office 2007 XLSX Test Document")
    ->setSubject("Office 2007 XLSX Test Document")
    ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.")
    ->setKeywords("office 2007 openxml php")
    ->setCategory("Test result file");

$sheetIndex = 0;
if($dataAll){
    $ymArr = [];
    $ymKeyArr = [];
    $ymArr[] = date('Ym');
    for ($i=1;$i<6;$i++){
        $ymArr[] = date('Ym',strtotime('-'.$i.' month'));
    }
    foreach ($ymArr as $ym) {
        $ymKeyArr[] = D('UserTag', 'Service')->getYmDesc($ym);
    }

    foreach ($dataAll as $k=>$data){
        if($sheetIndex > 0) $objPHPExcel->createSheet($sheetIndex);
        $sheetName = $tagname[$k];
        //excel标题栏
        $objPHPExcel->setActiveSheetIndex($sheetIndex)
            ->setCellValue('A1', '地区')
            ->setCellValue('B1', $ymKeyArr[0])
            ->setCellValue('C1', $ymKeyArr[1])
            ->setCellValue('D1', $ymKeyArr[2])
            ->setCellValue('E1', $ymKeyArr[3])
            ->setCellValue('F1', $ymKeyArr[4])
            ->setCellValue('G1', $ymKeyArr[5]);

        //excel数据
        $j = 2;
        foreach ($data as $kk=>$vv){
            $objPHPExcel->setActiveSheetIndex($sheetIndex)
                ->setCellValue('A' . $j, $kk)
                ->setCellValue('B' . $j, $vv[$ymKeyArr[0]])
                ->setCellValue('C' . $j, $vv[$ymKeyArr[1]])
                ->setCellValue('D' . $j, $vv[$ymKeyArr[2]])
                ->setCellValue('E' . $j, $vv[$ymKeyArr[3]])
                ->setCellValue('F' . $j, $vv[$ymKeyArr[4]])
                ->setCellValue('G' . $j, $vv[$ymKeyArr[5]]);
            $j ++;
        }

        $objPHPExcel->getActiveSheet()->setTitle($sheetName);
        $sheetIndex ++;
    }
}
if ($post['stattype'] == 1){
    $stattypeDesc = '省区';
}else{
    $stattypeDesc = '城市';
}
$fileName = '近半年用户画像数据-'.$stattypeDesc.'-'.date('Ym');

header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
header('Content-Disposition:inline;filename="'.$fileName.'.xls"');
header("Content-Transfer-Encoding: binary");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Pragma: no-cache");
$objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save('php://output');
exit;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值