Skip to content

后台导入excel功能,结合前端导入组件,支持导入错误信息提示、导入示例查询和导入进度查询等功能。

导入功能调用框架核心ImportExcelService的方法封装,文件位置:tmcore/services/ImportExcelService.php。

导入函数

获取导入数据

/**
 * 获取导入excel数据
 * @param string $name 上传文件名称
 * @param bool $is_delete 是否删除上传文件
 * @return array
 */
public static function importExcel($name = "", $is_delete = true)

遍历导入数据并检验

/**
 * 导入列表循环
 * @param array $list 循环数据
 * @param array $key_column_arr 字段对应数组
 * @param callable $callColumnFn 回调函数
 * @param callable $calFn 回调函数
 */
public static function listForeach($list, $key_column_arr = [], $callColumnFn = null, $calFn = null)

调用示例

以后台admin模块的ArticleService为例,导入文章列表

<?php

namespace app\admin\service\cms;

use tmcore\base\BaseService;
use app\common\model\article\Article;
use tmcore\services\ImportExcelService;

class ArticleService extends BaseService
{
    /**
     * 导入文章
     * @param array $params
     * @param array $adminInfo
     * @return array|bool
     */
    public static function import(array $params, array $adminInfo)
    {
        $list = ImportExcelService::importExcel('file');

        $key_arr = [
            'title' => 0,
            'cate_id' => 1,
            'image' => 2,
            'desc' => 3,
            'summary' => 4,
            'author' => 5,
            'content' => 6,
            'init_hits' => 7,
            'sort' => 8,
            'is_recommend' => 9,
            'status' => 10,
        ];

        ImportExcelService::listForeach($list['data'], $key_arr, function ($value, $key, $column_name, $row_count) use ($params) {
            // 检查结果抛出异常
            if (!$value && $column_name == 'title') ImportExcelService::setError($key, $column_name, $row_count, $key . '不可为空');
            if (!$value && $column_name == 'cate_id') ImportExcelService::setError($key, $column_name, $row_count, $key . '不可为空');
            if (!$value && $column_name == 'image') ImportExcelService::setError($key, $column_name, $row_count, $key . '不可为空');
        }, function ($value, $key) use ($params) {
            $data = [
                'title' => $value[0] ?? '',
                'cate_id' => $value[1] ?? 0,
                'image' => $value[2] ?? '',
                'desc' => $value[3] ?? '',
                'summary' => $value[4] ?? '',
                'author' => $value[5] ?? '',
                'content' => $value[6] ?? '',
                'init_hits' => $value[7] ?? 0,
                'sort' => $value[8] ?? 0,
                'is_recommend' => $value[9] ?? 0,
                'status' => $value[10] ?? 1,
            ];
            ImportExcelService::setSuccess($data); // 循环数据处理
        });

        // 批量增加数据
        (new Article)->saveAll(ImportExcelService::$createData); // 获取导入数据

        return ImportExcelService::getImportResult(); // 返回导入结果
    }
}

Released under the Apache-2.0 License.