66use PhpOffice \PhpSpreadsheet \Style \Alignment ;
77use PhpOffice \PhpSpreadsheet \Style \Border ;
88use PhpOffice \PhpSpreadsheet \Style \Fill ;
9- use PhpOffice \PhpSpreadsheet \Worksheet \HeaderFooter ;
10- use PhpOffice \PhpSpreadsheet \Worksheet \HeaderFooterDrawing ;
119use PhpOffice \PhpSpreadsheet \Worksheet \PageSetup ;
12- use PhpOffice \PhpSpreadsheet \Writer \ Xls as ExcelWriter ;
10+ use PhpOffice \PhpSpreadsheet \IOFactory ;
1311use yii \base \Component ;
1412
1513class ArrayDataToExcel extends Component
@@ -44,6 +42,7 @@ public function create($saveAsFile=true, $filename=null)
4442
4543 // Select Worksheet
4644 $ worksheet = $ spreadsheet ->getActiveSheet ();
45+ $ worksheet ->setTitle ($ options ['first_sheet_name ' ]);
4746
4847 // Page Setup
4948 $ worksheet ->getPageSetup ()
@@ -127,7 +126,7 @@ public function create($saveAsFile=true, $filename=null)
127126 }
128127
129128 // Save Output
130- $ writer = $ this ->createWriter ($ options ['writer ' ], $ spreadsheet );
129+ $ writer = $ this ->createWriter ($ spreadsheet , $ options ['writer ' ]);
131130 $ writer ->save ($ output );
132131 }
133132
@@ -145,6 +144,8 @@ protected function getDefaultOptions()
145144 'lastModifiedBy ' =>'IT Dev Team ' ,
146145 'filename_prepend ' =>'Export Ipp ' ,
147146 'date_format ' =>'Y-m-d_his ' ,
147+ // Worksheet Options
148+ 'first_sheet_name ' =>'Sheet1 ' ,
148149 // Cell Options
149150 'first_col ' =>'A ' ,
150151 'first_cell ' =>'A1 ' ,
@@ -189,15 +190,12 @@ protected function validateWriter($item)
189190 return in_array ($ item , $ validWriters );
190191 }
191192
192- protected function createWriter ($ item , $ spreadsheet )
193+ protected function createWriter ($ spreadsheet , $ item = ' Xls ' )
193194 {
194- $ baseClass = 'PhpOffice\PhpSpreadsheet\Writer ' ;
195- if ($ this ->validateWriter ($ item )) {
196- $ className = "$ baseClass \\$ item " ;
197- } else {
198- $ className = "$ baseClass \\Xls " ;
195+ if (!$ this ->validateWriter ($ item )) {
196+ throw new \yii \base \InvalidConfigException ("Writer type ' {$ item }' not found! " , 400 );
199197 }
200198
201- return \Yii:: createObject ( $ className , [ $ spreadsheet ] );
199+ return IOFactory:: createWriter ( $ spreadsheet , $ item );
202200 }
203201}
0 commit comments