近期项目有数据批量导入导出的需求,研究了几天,最后被数据有效性难住了,导出的数据如果过多,数据有效性识别不了,则自动给删除了,查了很多资料,最后得出的解决方案是再创建一个sheet2,将要设置数据有效性的数据导出在sheet2表中,然后在sheet1表中将sheet2表中的数据读出来,完美解决~~~
上代码
$spreadsheet = new Spreadsheet();
$worksheet = $spreadsheet->getActiveSheet();
$sheet_two = $spreadsheet->createSheet(2)->setTitle('sheet2');
//设置报读课程下拉选项
$couse=db('course')->where(['school_id'=>session('school_id'),'status'=>1,'cost_type'=>['in',['1','2']]])->column('name');
for ($i=0; $i < count($couse); $i++) {
$j = $i + 1; //从表格第11行开始
$sheet_two->setCellValueByColumnAndRow(1, $j, $couse[$i]);
}
$objValidation = $worksheet->getCell("E"