2015-04-23 8 views
12

Sto creando un modello Excel che dovrebbe contenere un elenco a discesa. Vedo il suo possibile con la libreria phpexcel (PHPExcel Multiple Dropdown list that dependent). Mi chiedevo se si potesse fare con la libreria laravel-excel fornita da maatwebsite. ho bisogno la sintassi per le funzioni come il menu a discesa, NamedRange, datavalidation, setFormula, eccLibreria excel Laravel (Maatwebsite): Come creare un elenco a discesa nelle esportazioni

+1

Si potrebbe studiare la struttura della facciata per la libreria laravel-Excel come questo è solo un wrapper per il pacchetto phpexcel originale. – Muffy

+0

Laravel-excel fornisce un'API di stile Eloquent in modo da non avere una traduzione diretta tra la libreria raw phpexcel vs laravel-excel. – Muffy

+0

Se il tuo elenco a discesa è sempre nello stesso posto, prendi in considerazione la possibilità di farlo sul modello in Excel e poi aggiungi i tuoi dati a una copia del modello attraverso il tuo sito. L'utilizzo di intervalli denominati dinamici consente di disporre di elenchi a discesa a cascata in cui è possibile semplicemente modificare i dati in un intervallo di fogli di calcolo. – Dan

risposta

1
public function index() { 
     \Excel::create('file', function($excel) { 
      require_once("/apppath//vendor/phpoffice/phpexcel/Classes/PHPExcel/NamedRange.php"); 
      require_once("/apppath/vendor/phpoffice/phpexcel/Classes/PHPExcel/Cell/DataValidation.php"); 

      $excel->sheet('New sheet', function($sheet) { 

       $sheet->SetCellValue("A1", "UK"); 
       $sheet->SetCellValue("A2", "USA"); 

       $sheet->_parent->addNamedRange(
         new \PHPExcel_NamedRange(
         'countries', $sheet, 'A1:A2' 
         ) 
       ); 


       $sheet->SetCellValue("B1", "London"); 
       $sheet->SetCellValue("B2", "Birmingham"); 
       $sheet->SetCellValue("B3", "Leeds"); 
       $sheet->_parent->addNamedRange(
         new \PHPExcel_NamedRange(
         'UK', $sheet, 'B1:B3' 
         ) 
       ); 

       $sheet->SetCellValue("C1", "Atlanta"); 
       $sheet->SetCellValue("C2", "New York"); 
       $sheet->SetCellValue("C3", "Los Angeles"); 
       $sheet->_parent->addNamedRange(
         new \PHPExcel_NamedRange(
         'USA', $sheet, 'C1:C3' 
         ) 
       ); 
       $objValidation = $sheet->getCell('D1')->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! 
      }); 
     })->download("xlsx"); 
     return view('home'); 
    } 
+0

Grazie. L'ho risolto molto tempo fa. Allo stesso modo che hai suggerito. –

+0

@ user993553 Come posso passare la mia matrice di dati in esso. – Mukesh

Problemi correlati