使用说明

使用说明

导入与下载模板在 [表Service.cs] 中实现

下载导入 Excel 模板

/// <summary>
/// 导入时下载模板
/// </summary>
/// <returns></returns>
public override WebResponseContent DownLoadTemplate()
{
    //指定下载模板导入的字段
    DownLoadTemplateColumns = x => new { x.字段1, x.字段2};
    return base.DownLoadTemplate();
}

下载导入模板(异步async)

异步启用说明

代码生成器勾选[异步接口]后此方法才会执行,默认执行的是上面同步方法

/// <summary>
/// 导入时下载模板异步
/// </summary>
/// <returns></returns>
public override async Task<WebResponseContent> DownLoadTemplateAsync()
{
    //指定下载模板导入的字段
    DownLoadTemplateColumns = x => new { x.字段1, x.字段2};
    return await base.DownLoadTemplateAsync();
}

导入 Excel

/// <summary>
/// 导入
/// </summary>
/// <param name="files"></param>
/// <returns></returns>
public override WebResponseContent Import(List<IFormFile> files)
{
    WebResponseContent webResponse = new WebResponseContent();
    //指定下载模板导入的字段(注意要与上面DownLoadTemplate的一致)
    //DownLoadTemplateColumns = x => new { x.字段1, x.字段2};

    //设置忽略下拉框数据源验证(字段绑定了数据源,但不需要验证数据源)
    //ImportIgnoreSelectValidationColumns = x => new { x.字段 };

    //自定义导入字段名称:导入时右excel表头名称与实际字段名称不一致时,这里配置转换规则
    //ExcelHeaderMap = x => new Dictionary<object, string>() {
    //    { "excel对应的字段标题中文名","实际中文名"},
    //    { "测试订单编号","订单编号"},
    //};


    /***************************读取原生excel文件配置***************************/
    /// <summary>
    /// string=当前读取的excel单元格的值
    /// ExcelWorksheet=excel对象
    /// ExcelRange当前excel单元格对象
    /// int=当前读取的第几行
    /// int=当前读取的第几列
    /// string=返回的值
    /// </summary>
    ImportOnReadCellValue = (string value, ExcelWorksheet worksheet, ExcelRange excelRange, 
      int rowIndex, int columnIndex) =>
    {
        string 表头列名 = worksheet.Cells[1, columnIndex].Value?.ToString();
        //这里可以返回处理后的值,值最终写入到model字段上
        return value;
    };

    //导入保存前处理(可以对list设置新的值)
    ImportOnExecuting = (List<当前表> list) =>
    {
        //注意:
        //1.这里不要list=设置新的值

        //2.如果业务复杂,这里可以手动调用数据库保存写入

        //为-1时,框架不会保存到数据库,请手动操作保存数据库  repository.AddRange(list,true)
        //webResponse.Code = "-1";
        //webResponse.Message = "导入成功";
        //return webResponse.OK("导入成功");

        return webResponse.OK();
    };

    //导入后处理(已经写入到数据库了)
    ImportOnExecuted = (List<当前表> list) =>
    {
        return webResponse.OK();
    };
    return base.Import(files);
}

导入(异步async)

异步启用说明

代码生成器勾选[异步接口]后此方法才会执行,默认执行的是上面同步方法

/// <summary>
/// 导入异步
/// </summary>
/// <param name="files"></param>
/// <returns></returns>
public override async Task<WebResponseContent> ImportAsync(List<IFormFile> files)
{
    WebResponseContent webResponse = new WebResponseContent();
    //指定下载模板导入的字段(注意要与上面DownLoadTemplate的一致)
    //DownLoadTemplateColumns = x => new { x.字段1, x.字段2};

    //设置忽略下拉框数据源验证(字段绑定了数据源,但不需要验证数据源)
    //ImportIgnoreSelectValidationColumns = x => new { x.字段 };

    //自定义导入字段名称:导入时右excel表头名称与实际字段名称不一致时,这里配置转换规则
    //ExcelHeaderMap = x => new Dictionary<object, string>() {
    //    { "excel对应的字段标题中文名","实际中文名"},
    //    { "测试订单编号","订单编号"},
    //};

    /***************************读取原生excel文件配置***************************/
    /// <summary>
    /// string=当前读取的excel单元格的值
    /// ExcelWorksheet=excel对象
    /// ExcelRange当前excel单元格对象
    /// int=当前读取的第几行
    /// int=当前读取的第几列
    /// string=返回的值
    /// </summary>
    ImportOnReadCellValue = (string value, ExcelWorksheet worksheet, ExcelRange excelRange,
       int rowIndex, int columnIndex) =>
    {
        string 表头列名 = worksheet.Cells[1, columnIndex].Value?.ToString();
        //这里可以返回处理后的值,值最终写入到model字段上
        return value;
    };

    //导入保存前处理(可以对list设置新的值)
    ImportOnExecuting = (List<当前表> list) =>
    {
        //注意:
        //1.这里不要list=设置新的值

        //2.如果业务复杂,这里可以手动调用数据库保存写入

        //为-1时,框架不会保存到数据库,请手动操作保存数据库  repository.AddRange(list,true)
        //webResponse.Code = "-1";
        //webResponse.Message = "导入成功";
        //return webResponse.OK("导入成功");

        return webResponse.OK();
    };

    ImportOnExecutingAsync = async (List<当前表> list) =>
    {
        //await xxx异步操作
        return webResponse.OK();
    };

    //导入后处理(已经写入到数据库了)
    ImportOnExecuted = (List<当前表> list) =>
    {
        return webResponse.OK();
    };

    ImportOnExecutingAsync = async (List<当前表> list) =>
    {
        //await xxx异步操作
        return webResponse.OK();
    };
    return await base.ImportAsync(files);
}
Last Updated 2026/5/12 17:18:25