我试图在依赖的phpexcel中设置多个下拉列表.基本上,当您在A列的下拉列表中选择一个值时,它会在B列的下拉列表中加载不同的内容.
我能够轻松地在单元格上设置下拉列表.我试图找出如何根据一个下拉列表的选择加载内容.
任何反馈或解决方案或指南将不胜感激
Moh*_*mar 10
好吧,我设法搞清楚了.这是未来任何人的要点:
最好使用命名范围.基本上在单元格中定义列表项(命名范围).这可以在不同的工作表上.所以,让我们举一个国家和城市的例子.下拉1将有县,下拉2将有城市.因此,定义命名范围.一个将被称为国家.其他两个命名范围将在国家名称后面调用.所以,我们走吧.
$objPHPExcel->getSheetByName('Worksheet 1')->SetCellValue("A1", "UK");
$objPHPExcel->getSheetByName('Worksheet 1')->SetCellValue("A2", "USA");
$objPHPExcel->addNamedRange(
new PHPExcel_NamedRange(
'countries',
$objPHPExcel->getSheetByName('Worksheet 1'),
'A1:A2'
)
);
$objPHPExcel->getSheetByName('Worksheet 1')->SetCellValue("B1", "London");
$objPHPExcel->getSheetByName('Worksheet 1')->SetCellValue("B2", "Birmingham");
$objPHPExcel->getSheetByName('Worksheet 1')->SetCellValue("B3", "Leeds");
$objPHPExcel->addNamedRange(
new PHPExcel_NamedRange(
'UK',
$objPHPExcel->getSheetByName('Worksheet 1'),
'B1:B3'
)
);
$objPHPExcel->getSheetByName('Worksheet 1')->SetCellValue("C1", "Atlanta");
$objPHPExcel->getSheetByName('Worksheet 1')->SetCellValue("C2", "New York");
$objPHPExcel->getSheetByName('Worksheet 1')->SetCellValue("C3", "Los Angeles");
$objPHPExcel->addNamedRange(
new PHPExcel_NamedRange(
'USA',
$objPHPExcel->getSheetByName('Worksheet 1'),
'C1:C3'
)
);
Run Code Online (Sandbox Code Playgroud)
这就是命名范围.一个是国家,另一个是每个国家的城市范围.现在加载第一个下拉列表以选择国家/地区.
$objValidation = $objPHPExcel->getActiveSheet()->getCell('A1')->getDataValidation();
$objValidation->setType( PHPExcel_Cell_DataValidation::TYPE_LIST );
$objValidation->setErrorStyle( PHPExcel_Cell_DataValidation::STYLE_INFORMATION );
$objValidation->setAllowBlank(false);
$objValidation->setShowInputMessage(true);
$objValidation->setShowErrorMessage(true);
$objValidation->setShowDropDown(true);
$objValidation->setErrorTitle('Input error');
$objValidation->setError('Value is not in list.');
$objValidation->setPromptTitle('Pick from list');
$objValidation->setPrompt('Please pick a value from the drop-down list.');
$objValidation->setFormula1("=countries"); //note this!
Run Code Online (Sandbox Code Playgroud)
现在根据国家/地区的下拉列表加载城市.这使用名为Indirect的excel函数.基本上返回选定的值.因此命名相似的范围.所以我选择"英国",它会加载名为"UK"的指定范围,该范围包含英国城市.
$objValidation = $objPHPExcel->getActiveSheet()->getCell('B1')->getDataValidation();
$objValidation->setType( PHPExcel_Cell_DataValidation::TYPE_LIST );
$objValidation->setErrorStyle( PHPExcel_Cell_DataValidation::STYLE_INFORMATION );
$objValidation->setAllowBlank(false);
$objValidation->setShowInputMessage(true);
$objValidation->setShowErrorMessage(true);
$objValidation->setShowDropDown(true);
$objValidation->setErrorTitle('Input error');
$objValidation->setError('Value is not in list.');
$objValidation->setPromptTitle('Pick from list');
$objValidation->setPrompt('Please pick a value from the drop-down list.');
$objValidation->setFormula1('=INDIRECT($A$1)');
Run Code Online (Sandbox Code Playgroud)
注意:我用过两张纸.工作表1用于保存数据和工作表0或默认用于保存下拉列表.祝一切顺利.
| 归档时间: |
|
| 查看次数: |
6769 次 |
| 最近记录: |