2015-04-23 124 views
12

我正在創建一個應包含下拉列表的Excel模板。我看到它可能與phpexcel庫(PHPExcel Multiple Dropdown list that dependent)。 我想知道是否可以用maatwebsite提供的laravel-excel庫來完成。 我需要像下拉,NamedRange,資料驗證,setFormula函數的語法等Laravel excel庫(Maatwebsite):如何在出口中創建下拉列表

+1

你可以學習的外觀結構的laravel-Excel的庫,因爲這僅僅是一個包裝到原phpexcel包。 – Muffy

+0

Laravel-excel提供了一種Eloquent風格的API,因此您不會在原始的phpexcel與laravel-excel庫之間直接進行翻譯。 – Muffy

+0

如果您的下拉列表始終位於同一位置,請考慮將其放在Excel中的模板上,然後通過您的網站將數據添加到該模板的副本。使用動態命名範圍將允許您使用級聯下拉列表,您可以在其中更改電子表格範圍內的數據。 – Dan

回答

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

謝謝。我很久以前解決了它。用你建議的相同方式。 –

+0

@ user993553如何將我的數據數組傳遞給它。 – Mukesh