2015-04-23 30 views
12

Bir açılır liste içermesi gereken bir excel şablonu oluşturuyorum. Phpexcel kütüphanesi ile mümkün olduğunu görüyorum (PHPExcel Multiple Dropdown list that dependent). maatwebsite tarafından sağlanan laravel-excel kütüphanesi ile yapılabilir mi diye merak ediyordum. Ben bu orijinal phpexcel paketine sadece bir sarıcı gibi laravel-excel kütüphane için Cephe yapısını incelemek olabilir açılan, AdlandırılanAralık, datavalidation, setFormula gibi işlevler için sözdizimi, vbLaravel excel kitaplığı (Maatwebsite): Dışa aktarma listesinde aşağı açılan liste nasıl oluşturulur

+1

gerekir. – Muffy

+0

Laravel-excel bir Eloquent stili API sağlar, böylece ham phpexcel ile laravel-excel kütüphanesi arasında doğrudan bir çeviri olmaz. – Muffy

+0

Açılır listeniz her zaman aynı yerde ise, bunu Excel'de şablonda yapmayı ve ardından verilerinizi sitenizin üzerinden şablonun bir kopyasına eklemeyi düşünün. Dinamik adlandırılmış aralıkları kullanmak, verileri yalnızca bir e-tablo aralığında değiştirebileceğiniz, basamaklı açılan listelere sahip olmanızı sağlar. – Dan

cevap

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

Teşekkürler. Uzun zaman önce çözdüm. Aynı şekilde önerdiğin gibi. –

+0

@ user993553 Veri dizilimimi ona nasıl iletebilirim? – Mukesh

İlgili konular