Skip to content

Commit 1562edc

Browse files
committed
Improvement for ArrayDataToExcel
1 parent e7ec267 commit 1562edc

File tree

1 file changed

+9
-11
lines changed

1 file changed

+9
-11
lines changed

src/excel/ArrayDataToExcel.php

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,8 @@
66
use PhpOffice\PhpSpreadsheet\Style\Alignment;
77
use PhpOffice\PhpSpreadsheet\Style\Border;
88
use PhpOffice\PhpSpreadsheet\Style\Fill;
9-
use PhpOffice\PhpSpreadsheet\Worksheet\HeaderFooter;
10-
use PhpOffice\PhpSpreadsheet\Worksheet\HeaderFooterDrawing;
119
use PhpOffice\PhpSpreadsheet\Worksheet\PageSetup;
12-
use PhpOffice\PhpSpreadsheet\Writer\Xls as ExcelWriter;
10+
use PhpOffice\PhpSpreadsheet\IOFactory;
1311
use yii\base\Component;
1412

1513
class 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

Comments
 (0)