lekoala/silverstripe-excel-import-export

在 SilverStripe 中用 Excel 替换 CSV

安装数: 4,198

依赖项: 2

建议者: 1

安全: 0

星标: 8

关注者: 4

分支: 10

开放问题: 0

类型:silverstripe-vendormodule

3.1.0 2024-07-23 09:35 UTC

This package is auto-updated.

Last update: 2024-09-23 09:58:56 UTC


README

Build Status scrutinizer Code coverage

简介

添加 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