diff --git a/composer.json b/composer.json index a9af536..0e10a3f 100644 --- a/composer.json +++ b/composer.json @@ -18,17 +18,12 @@ "php": ">=7.0", "yajra/laravel-datatables-oracle": "8.*|9.*", "yajra/laravel-datatables-html": "3.*|4.*", - "maatwebsite/excel": "^3.0", "illuminate/console": "*" }, "require-dev": { "mockery/mockery": "~1.0", "phpunit/phpunit": "~7.0" }, - "suggest": { - "rap2hpoutre/fast-excel": "Faster exporting of dataTables using fast-excel package.", - "barryvdh/laravel-snappy": "For exporting of dataTables to PDF." - }, "autoload": { "psr-4": { "Yajra\\DataTables\\": "src/" @@ -50,6 +45,8 @@ } }, "suggest": { + "maatwebsite/excel": "Exporting of dataTables (excel, csv and PDF) using maatwebsite package.", + "rap2hpoutre/fast-excel": "Faster exporting of dataTables using fast-excel package.", "dompdf/dompdf": "Allows exporting of dataTable to PDF using the DomPDF.", "barryvdh/laravel-snappy": "Allows exporting of dataTable to PDF using the print view." }, diff --git a/src/ButtonsServiceProvider.php b/src/ButtonsServiceProvider.php index ce771c4..8831323 100644 --- a/src/ButtonsServiceProvider.php +++ b/src/ButtonsServiceProvider.php @@ -62,6 +62,9 @@ public function register() $this->mergeConfigFrom(__DIR__ . '/config/config.php', 'datatables-buttons'); $this->app->register(HtmlServiceProvider::class); - $this->app->register(ExcelServiceProvider::class); + + if (class_exists(ExcelServiceProvider::class)) { + $this->app->register(ExcelServiceProvider::class); + } } } diff --git a/src/Services/DataTable.php b/src/Services/DataTable.php index 9002b8e..fd0dfc9 100644 --- a/src/Services/DataTable.php +++ b/src/Services/DataTable.php @@ -433,6 +433,10 @@ protected function buildExcelFile() return $this->buildFastExcelFile(); } + if (! class_exists(\Maatwebsite\Excel\ExcelServiceProvider::class)) { + throw new \Exception('Please install maatwebsite/excel to be able to use this function.'); + } + if (! new $this->exportClass(collect()) instanceof DataTablesExportHandler) { $collection = $this->getAjaxResponseData();