2016-10-06 50 views
1

使用PHPExcel創建像這樣一個下拉列表:如何增加細胞字符限制PHPExcel類型列表

$objValidation = $objPHPExcel->getActiveSheet()->getCell("A".$i)->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.'); 
$formulaString = '"' . implode(", ", $items_array) . '"'; 
$objValidation->setFormula1($formulaString); 

$objWriter = new \PHPExcel_Writer_Excel2007($objPHPExcel); 
$filename = "MyExcel.xlsx"; 
header('Content-Type: application/vnd.ms-excel'); 
header('Content-Disposition: attachment;filename="'.$filename.'"'); 
header('Cache-Control: max-age=0'); 
$objWriter->save('php://output'); 

問題是,它在1023字符,因此打破了「下拉列表」功能切斷。

如何增加字符數限制?

+0

你檢查這是否是PHPExcel強加的限制,或者如果它是強加的限制格式和/或Microsoft Excel? – Phylogenesis

+0

@Phylogenesis我已經用代碼創建文件的地方更新了帖子,我有一種感覺與它的頭文件有關。 – ImpendingDoom

+1

試用Excel 2007本身,它似乎不可能輸入超過256個字符。你有沒有想過使用不同的工作表並使用單元格範圍進行單元驗證? – Phylogenesis

回答

1

正如評論中所討論的那樣,數據驗證中靜態列表的長度是有限制的。

你應該把驗證數據的範圍在工作簿的地方,並提供這個範圍驗證:

// Get options from another sheet 
$objvalidation->setFormula1('ExampleSheet!A1:A100');