2015-04-23 3 views
12

Ich erstelle eine Excel-Vorlage, die eine Dropdown-Liste enthalten sollte. Ich sehe es mit der phpexcel-Bibliothek (PHPExcel Multiple Dropdown list that dependent) möglich. Ich frage mich, ob es mit der Laravel-Excel-Bibliothek von maatwebsite getan werden könnte. Ich brauche die Syntax für Funktionen wie Drop-down-Namedrange, Datenvalidierung, setFormula usw.Laravel Excel-Bibliothek (Maatwebsite): So erstellen Sie eine Dropdown-Liste in den Exporten

+1

Sie die Fassadenstruktur für die Laravel-Excel-Bibliothek studieren konnte, da dies auf das ursprüngliche PHPExcel Paket nur ein Wrapper ist. – Muffy

+0

Laravel-Excel bietet eine Eloquent-Stil-API, so dass Sie keine direkte Übersetzung zwischen der Bibliothek raw phpexcel vs laravel-excel haben. – Muffy

+0

Wenn sich Ihre Dropdown-Liste immer an derselben Stelle befindet, können Sie sie in der Vorlage in Excel erstellen und Ihre Daten dann über Ihre Website einer Kopie der Vorlage hinzufügen. Die Verwendung dynamischer benannter Bereiche ermöglicht Ihnen überlappende Dropdown-Listen, in denen Sie nur die Daten in einem Tabellenkalkulationsbereich ändern können. – Dan

Antwort

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

Danke. Ich habe es vor langer Zeit gelöst. So wie du es vorgeschlagen hast. –

+0

@ user993553 Wie kann ich mein Datenfeld hineinreichen? – Mukesh

Verwandte Themen