From d224b70e62f30b17f219a3ac90e6e4f5831477db Mon Sep 17 00:00:00 2001 From: Thomas Date: Wed, 7 Feb 2024 16:21:41 +0100 Subject: [PATCH] make adapter configurable --- README.md | 12 ++++++++++++ _config.php | 7 +++++++ _config/excel-import-export.yml | 3 +++ composer.json | 2 +- src/ExcelGridFieldExportButton.php | 3 +-- src/ExcelImportExport.php | 2 +- 6 files changed, 25 insertions(+), 4 deletions(-) create mode 100644 _config.php diff --git a/README.md b/README.md index 38467f5..52e4491 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,18 @@ These changes apply automatically to SecurityAdmin and ModelAdmin through extens To make import easier, import specs are replaced by a sample file that is ready to use for the user. This import file can be further customised by implementing `sampleImportData` that should return an array of rows. +## Choosing your adapter + +You can choose your preferred adapter in yml. Accepted values are: +- csv: PhpSpreadsheet,OpenSpout,League,Native +- xlsx: PhpSpreadsheet,OpenSpout,Simple,Native + +```yml +LeKoala\ExcelImportExport\ExcelImportExport: + preferred_csv_adapter: 'Native' + preferred_xlsx_adapter: 'Native' +``` + ## Configure exported fields All fields are exported by default (not just summary fields that are useless by themselves) diff --git a/_config.php b/_config.php new file mode 100644 index 0000000..2d42742 --- /dev/null +++ b/_config.php @@ -0,0 +1,7 @@ +preferred_csv_adapter ?? 'Native'; +SpreadCompat::$preferredXslxAdapter = ExcelImportExport::config()->preferred_xlsx_adapter ?? 'Native'; diff --git a/_config/excel-import-export.yml b/_config/excel-import-export.yml index 5fcf27b..5187730 100644 --- a/_config/excel-import-export.yml +++ b/_config/excel-import-export.yml @@ -4,6 +4,9 @@ After: - "#corecache" --- LeKoala\ExcelImportExport\ExcelImportExport: + preferred_csv_adapter: 'Native' + preferred_xlsx_adapter: 'PhpSpreadsheet' + default_creator: 'SilverStripe' default_extension: "xlsx" # could be csv allowed_extensions: - csv diff --git a/composer.json b/composer.json index c411944..c91f0f5 100644 --- a/composer.json +++ b/composer.json @@ -22,7 +22,7 @@ "silverstripe/recipe-plugin": "^2", "silverstripe/vendor-plugin": "^2", "silverstripe/framework": "^5", - "lekoala/spread-compat": "^0.5.1" + "lekoala/spread-compat": "^0.6" }, "require-dev": { "phpunit/phpunit": "^9.5", diff --git a/src/ExcelGridFieldExportButton.php b/src/ExcelGridFieldExportButton.php index 3d2151c..344d4ee 100644 --- a/src/ExcelGridFieldExportButton.php +++ b/src/ExcelGridFieldExportButton.php @@ -183,11 +183,10 @@ public function handleExport($gridField, $request = null) if ($ext != 'csv') { $end = ExcelImportExport::getLetter(count($this->getRealExportColumns($gridField))); - $opts['creator'] = "SilverStripe"; + $opts['creator'] = ExcelImportExport::config()->default_creator; $opts['autofilter'] = "A1:{$end}1"; } - SpreadCompat::$preferredCsvAdapter = SpreadCompat::NATIVE; SpreadCompat::output($data, $fileName, ...$opts); exit(); } diff --git a/src/ExcelImportExport.php b/src/ExcelImportExport.php index b16f2f5..d4fa65c 100644 --- a/src/ExcelImportExport.php +++ b/src/ExcelImportExport.php @@ -178,7 +178,7 @@ public static function sampleFileForClass($class) } $options = new Options(); - $options->creator = "SilverStripe"; + $options->creator = ExcelImportExport::config()->default_creator; SpreadCompat::output($data, $fileName, $options); exit(); }