PHPEXCEL设置单元格下拉框(最最最全教程)

PHPEXCEL设置单元格下拉框

/**
* 数据导出
* @params array $data 需要导出的数据
* @params array $header 标题栏
* @params string $filename 文件名
* @params array $spectials 需要加下拉框的单元格信息 [['column'=>'A','select_options'=>['共青团员','中共党员']]]
*
*/
public function exportDataSelectOptions ($data, $header, $filename = "data", $spectials)
{
    // Add some data
    $this->phpExcel->setActiveSheetIndex(0);
    //添加头部
    $hk = 0;
    foreach ($header as $k => $v)
    {
        $colum = \PHPExcel_Cell::stringFromColumnIndex($hk);
        $this->phpExcel->setActiveSheetIndex(0)->setCellValue($colum."1", $v);
        $hk += 1;
    }
    
    $column = 2;
    $objActSheet = $this->phpExcel->getActiveSheet();
    
    //设置下拉框
    foreach($spectials as $spectial)
    {
        $optionsString = implode(',', $spectial['select_options']);
        
        $n = 0;
        // 我这里设置1000行,可自行设置
        while($n < 1000) {
            $objValidation = $objActSheet->getCell($spectial['column'].(string)$n)->getDataValidation(); //这一句为要设置数据有效性的单元格
            // $objValidation的各项设置参数可详见phpexcel文件,
            // 目录大概为/.../phpoffice/phpexcel/Classes/PHPExcel/Writer/Excel5/Worksheet.php 
            // 2767行 方法名:writeDataValidity
            $objValidation -> setType(\PHPExcel_Cell_DataValidation::TYPE_LIST)
            -> setErrorStyle(\PHPExcel_Cell_DataValidation::STYLE_STOP)
            -> setAllowBlank(true)
            -> setShowInputMessage(true)
            -> setShowErrorMessage(true)
            -> setShowDropDown(true)
            -> setErrorTitle('输入的值有误')
            -> setError('您输入的值不在下拉框列表内.')
            -> setPromptTitle('')
            -> setPrompt('')
            -> setOperator(\PHPExcel_Cell_DataValidation::OPERATOR_BETWEEN)
            -> setFormula1('"'.$optionsString.'"');
            
            $n++;
        }
    }
    foreach($data as $key => $rows)  //行写入
    {
        $span = 0;
        foreach($rows as $keyName => $value) // 列写入
        {
            $j = \PHPExcel_Cell::stringFromColumnIndex($span);
            $objActSheet->setCellValue($j.$column, $value);
            $span++;
        }
        $column++;
    }
    ob_end_clean();
    ob_start();
    $objWriter = new \PHPExcel_Writer_Excel5($this->phpExcel);
    //设置输出文件名及格式
    // header('Content-Type : application/vnd.ms-excel');
    // header('Content-Disposition:attachment;filename="'.$filename.'.xls"');
    //导出.xls格式的话使用Excel5,若是想导出.xlsx需要使用Excel2007
    // $objWriter= \PHPExcel_IOFactory::createWriter($this->phpExcel,'Excel5');
    // $objWriter->save('php://output');
    ob_end_flush();
    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->save('php://output');
    //清空数据缓存
    unset($data);
}
	新手,给个赞鼓励下呗^ ^
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值