WithCoderWithCoderWithCoder

PHPExcel设置单元格值下拉选择

    在PHP中,我们可以使用PHPExcel导出excel。而在平常的使用中,我们可以设置单元格的值使用下拉选择。本文介绍如何使用PHPExcel设置单元格值下拉选择。

    PHP导出Excel的准备工作,可以参考这篇文章“Think PHP5框架中实现PHP导出Excel文件”。

    示例代码如下(主要用到setFormula1方法):

/**
 * 单元格值设置下拉选择
 */
function exportFormula()
{
    // 初始化PHPExcel对象
    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');

    // 表头
    $xlsCell = array(
        array('id', 'id'),
        array('name', '姓名'),
        array('sex', '性别'),
    );

    for ($i = 0; $i < count($xlsCell); $i++) {
        $objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$i] . '1', $xlsCell[$i][1]);
    }

    // 示例数据
    $datas = [['id' => 1, 'name' => 'neil', 'sex' => '男']];
    $sex = array('1' => '男', '2' => '女');
    for ($i = 0; $i < count($datas); $i++) {
        $index = 0;
        foreach ($datas[$i] as $k => $v) {
            if ($k != 'sex') {
                $objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$index] . ($i + 2), $v);
            } else {
                // 设置性别单元格的值下拉
                $list = implode(',', $sex);
                $objValidation1 = $objPHPExcel->getActiveSheet(0)->getCell($cellName[$index] . ($i + 2))
                    ->getDataValidation();
                $objValidation1->setType(\PHPExcel_Cell_DataValidation::TYPE_LIST)
                    ->setErrorStyle(\PHPExcel_Cell_DataValidation::STYLE_INFORMATION)
                    ->setAllowBlank(false)
                    ->setShowInputMessage(true)
                    ->setShowErrorMessage(true)
                    ->setShowDropDown(true)
                    ->setErrorTitle('输入的值有误')
                    ->setError('您输入的值不在下拉框列表内.')
                    ->setPromptTitle('')
                    ->setPrompt('')
                    ->setFormula1('"' . $list . '"'); // 设置为变量内容
                $objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$index] . ($i + 2), $v);
            }
            $index++;
        }
    }

    // 下载文件到浏览器客户端
    $title = '家庭成员表';
    $xlsTitle = iconv('utf-8', 'gb2312', '家庭成员表'); // 文件标题
    header('pragma:public');
    header('Content-type:application/vnd.ms-excel;charset=utf-8;name="' . $xlsTitle . '.xls"');
    header("Content-Disposition:attachment;filename=$title.xls");
    $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
    $objWriter->save('php://output');
    exit;
}

欢迎分享交流,转载请注明出处:WithCoder » PHPExcel设置单元格值下拉选择