• 0
  • 0

PHP Excel导出多栏目

2022-03-02 358 0 admin 所属分类:PHP 记录
function writeOpenExcelData($data, $file_name = '')
{
    require_once PLUGIN_CLASS_PATH . 'PHPExcel-1.8/Classes/PHPExcel.php';
    require_once PLUGIN_CLASS_PATH . 'PHPExcel-1.8/Classes/PHPExcel/IOFactory.php';
    // 创建Excel文件对象
    $objPHPExcel = new PHPExcel();
    $keys = ['uid', 'name'];
    $names = ['UID', '昵称'];
    foreach ($data as $k => $v) {
        //PHPExcel会自动创建第一个sheet 要判断循环变量是否大于0,如果大于0那么要先createSheet()
        if ($k > 0) {
            $objPHPExcel->createSheet($k);
        }
        $objPHPExcel->setActiveSheetIndex($k)->setTitle($v['name']);
        foreach ($names as $kk => $vv) {
            $n = 65;
            $col = chr($n + $kk) . 1;
            $objPHPExcel->setActiveSheetIndex($k)->setCellValue($col, $vv);
        }
        foreach ($v['users'] as $kk => $vv) {
            foreach ($keys as $k2 => $key) {
                $n = 65;
                $col = chr($n + $k2) . ($kk + 2);
                //$objPHPExcel->setActiveSheetIndex(0)->setCellValue($col, $v[$key]);
                $objPHPExcel->setActiveSheetIndex($k)->setCellValueExplicit($col, $vv[$key], PHPExcel_Cell_DataType::TYPE_STRING2);
            }
        }
    }

    // 设置列宽
    // $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(20);

    // 设置默认显示的栏目
    $objPHPExcel->setActiveSheetIndex(0);
    $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
    if (!$file_name) {
        $file_name = date('Y-m-d His', TIMESTAMP);
    }
    $objWriter->save($file_name);
}


返回顶部