33
33
use Illuminate \Support \Collection ;
34
34
use PhpOffice \PhpSpreadsheet \Cell \Coordinate ;
35
35
use PhpOffice \PhpSpreadsheet \Spreadsheet ;
36
+ use PhpOffice \PhpSpreadsheet \Writer \Xls ;
36
37
use PhpOffice \PhpSpreadsheet \Writer \Xlsx ;
37
38
38
39
/**
@@ -209,7 +210,7 @@ public function setSkipHeader(bool $skipHeader)
209
210
*
210
211
* @param string $filename The file name to export to.
211
212
*
212
- * @return void
213
+ * @return bool status of export based PHP Office reader load() result
213
214
*/
214
215
public function export (string $ filename )
215
216
{
@@ -229,8 +230,24 @@ public function export(string $filename)
229
230
}
230
231
$ this ->applyMerging ($ sheet );
231
232
$ this ->applyMetaSettings ($ spreadsheet );
232
- $ writer = new Xlsx ($ spreadsheet );
233
+ // get extension
234
+ $ extension = pathinfo ($ filename , PATHINFO_EXTENSION );
235
+ $ extension = strtolower ($ extension );
236
+ if ($ extension === 'xls ' ) {
237
+ $ writer = new Xls ($ spreadsheet );
238
+ $ validator = new \PhpOffice \PhpSpreadsheet \Reader \Xls ();
239
+ } else {
240
+ $ writer = new Xlsx ($ spreadsheet );
241
+ $ validator = new \PhpOffice \PhpSpreadsheet \Reader \Xlsx ();
242
+ }
233
243
$ writer ->save ($ filename );
244
+ // validate output file using phpoffice
245
+ try {
246
+ $ validator ->load ($ filename );
247
+ return true ;
248
+ } catch (\PhpOffice \PhpSpreadsheet \Reader \Exception $ e ) {
249
+ return false ;
250
+ }
234
251
}
235
252
236
253
/**
@@ -315,7 +332,7 @@ protected function writeRow($sheet, $row, $rowIndex)
315
332
*/
316
333
protected function getValue ($ row , $ key )
317
334
{
318
- return $ this -> dataGet ($ row , $ key );
335
+ return self :: dataGet ($ row , $ key );
319
336
}
320
337
321
338
/**
@@ -327,7 +344,7 @@ protected function getValue($row, $key)
327
344
*
328
345
* @return mixed
329
346
*/
330
- protected function dataGet ($ target , $ key , $ default = null )
347
+ private static function dataGet ($ target , $ key , $ default = null )
331
348
{
332
349
if (is_null ($ key )) {
333
350
return $ target ;
@@ -429,4 +446,24 @@ protected function getHeaderFromMappingKey($mappingKey)
429
446
{
430
447
return $ this ->mapping [$ mappingKey ] ?? null ;
431
448
}
449
+
450
+ private static function first (array $ array , $ callback = null , $ default = null ) {
451
+ if (is_null ($ callback )) {
452
+ if (empty ($ array )) {
453
+ return value ($ default );
454
+ }
455
+
456
+ foreach ($ array as $ item ) {
457
+ return $ item ;
458
+ }
459
+ }
460
+
461
+ foreach ($ array as $ key => $ value ) {
462
+ if ($ callback ($ value , $ key )) {
463
+ return $ value ;
464
+ }
465
+ }
466
+
467
+ return value ($ default );
468
+ }
432
469
}
0 commit comments