lekoala / silverstripe-excel-import-export
在 SilverStripe 中用 Excel 替换 CSV
3.1.0
2024-07-23 09:35 UTC
Requires
- php: ^8.1
- lekoala/spread-compat: ^0.8
- silverstripe/framework: ^5
- silverstripe/recipe-plugin: ^2
- silverstripe/vendor-plugin: ^2
Requires (Dev)
- openspout/openspout: ^4
- phpoffice/phpspreadsheet: ^1.26
- phpunit/phpunit: ^9.5
- silverstripe/admin: ^2
- silverstripe/siteconfig: ^5
- squizlabs/php_codesniffer: ^3.5
README
简介
添加 xlsx 格式的导入/导出功能。同时替换内置的 csv 导入/导出以保持一致的行为。Excel 支持由 spread-compat
包提供,它可以使用底层的简单 xlsx、php spreadsheet 或 openspout。
这些更改会自动应用于通过扩展的 SecurityAdmin 和 ModelAdmin。
为了使导入更容易,导入规范被替换为用户可以立即使用的示例文件。此导入文件可以通过实现 sampleImportData
进一步自定义,它应该返回一个行数组。
选择您的适配器
您可以在 yml 中选择您首选的适配器。接受值包括
- csv: PhpSpreadsheet,OpenSpout,League,Native
- xlsx: PhpSpreadsheet,OpenSpout,Simple,Native
LeKoala\ExcelImportExport\ExcelImportExport: preferred_csv_adapter: 'Native' preferred_xlsx_adapter: 'Native'
配置导出字段
默认情况下导出所有字段(而不仅仅是无用的总结字段)
如果您想限制字段,您可以选择以下操作
- 在您的模型上实现一个
exportedFields
方法,该方法应该返回一个字段数组 - 在您的模型上定义一个
exported_fields
配置字段,这将限制列表到这些字段 - 在您的模型上定义一个
unexported_fields
配置字段,这将阻止这些字段被导出
自定义导入处理程序
如果您定义了一个 listImportHandlers
,您可以定义一组自定义处理程序,用户可以选择这些处理程序而不是默认过程。
这些处理程序可能或可能不启用 onlyUpdate
功能,这将阻止创建新记录。这需要在您的导入类中通过添加 setOnlyUpdate
方法来处理。
这需要在您的 ModelAdmin
类上编写一些自定义代码,可能如下所示
public function import($data, $form, $request) { if (!ExcelImportExport::checkImportForm($this)) { return false; } $handler = $data['ImportHandler'] ?? null; if ($handler == "default") { return parent::import($data, $form, $request); } return ExcelImportExport::useCustomHandler($handler, $form, $this); }
导入处理程序只需要实现一个 load
方法,该方法需要返回一个结果字符串或 BulkLoader_Result
对象。
兼容性
与 ^5 及以上版本兼容
维护者
LeKoala - thomas@lekoala.be