Показать список стран в выпадающем списке PHPExcel

Я пытаюсь создать файл Excel, используя PHPExcel. Я хочу показать страну в раскрывающемся списке в одном столбце, чтобы пользователь мог выбрать страну и загрузить ее с другими данными.

Теперь, чтобы создать выпадающий список в файле Excel, мы можем использовать проверку данных следующим образом

$objValidation = $objPHPExcel->getActiveSheet()->getCell('N' . $i)->getDataValidation();
$objValidation->setType(PHPExcel_Cell_DataValidation::TYPE_LIST);
$objValidation->setFormula1('"male,female"');

Но я предполагаю, что он имеет ограничение в 256 символов, и список стран, безусловно, превышает этот предел. Когда я создаю свой файл Excel, раскрывающийся список работает, как описано выше, но в раскрывающемся списке моей страны отображается пустой раскрывающийся список.

Я пробовал с именованным диапазоном, а также

$objPHPExcel->addNamedRange(
new PHPExcel_NamedRange(
'countries',
$objPHPExcel->getSheet(1),
'A1:A'.($counter-1),
false,
NULL
)
);

$objValidation->setFormula1('countries');

Пробовал и этот тоже

$objValidation->setFormula1('=countries');

$objValidation->setFormula1('countries!A1:A'.($counter-1));

Но это также показывает тот же результат. Так что я что-то упустил.

0

Решение

$objValidation->setFormula1('worksheetName!$A$1:$A$3');

Должен работать, как описано в PHPExcel Docs и продемонстрировано в примерах 15datavalidation.php а также 15datavalidation-xls.php в Examples папка

Как следует использовать именованный диапазон, и есть пример этого в файл 39dropdown.php в папке примеров используя континенты и страны

$objPHPExcel->addNamedRange(
new PHPExcel_NamedRange(
'Continents',
$objPHPExcel->getActiveSheet(), $continentColumn . '1:' . $continentColumn . ($key+1)
)
);$objValidation = $objPHPExcel->getActiveSheet()
->getCell('B1')
->getDataValidation();
$objValidation->setType( PHPExcel_Cell_DataValidation::TYPE_LIST )
->setErrorStyle( PHPExcel_Cell_DataValidation::STYLE_INFORMATION )
->setAllowBlank(false)
->setShowInputMessage(true)
->setShowErrorMessage(true)
->setShowDropDown(true)
->setErrorTitle('Input error')
->setError('Continent is not in the list.')
->setPromptTitle('Pick from the list')
->setPrompt('Please pick a continent from the drop-down list.')
->setFormula1('=Continents');

Все эти примеры работают без проблем (хотя связанные выпадающие списки не работают с Excel5 Writer.

Все, что я могу предложить, это убедиться, что вы ссылаетесь на правильный диапазон ячеек на правильном листе в вашей формуле

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]