其他分享
首页 > 其他分享> > Magicodes.IE之导入学生数据教程

Magicodes.IE之导入学生数据教程

作者:互联网

基础教程之导入学生数据

说明

本教程主要说明如果使用Magicodes.IE.Excel完成学生数据的Excel导入。

要点

主要步骤

1.安装包Magicodes.IE.Excel

在本篇教程中,我们仅演示使用Excel来完成学生数据的导入。我们需要在已准备好的工程中安装以下包,参考命令如下所示:

Install-Package Magicodes.IE.Excel

2.创建导入Dto

主要代码如下所示:

/// <summary>
///     学生状态 正常、流失、休学、勤工俭学、顶岗实习、毕业、参军
/// </summary>
public enum StudentStatus
{
    /// <summary>
    ///     正常
    /// </summary>
    [Display(Name = "正常")] Normal = 0,

    /// <summary>
    ///     流失
    /// </summary>
    [Description("流水")] PupilsAway = 1,

    /// <summary>
    ///     休学
    /// </summary>
    [Display(Name = "休学")] Suspension = 2,

    /// <summary>
    ///     勤工俭学
    /// </summary>
    [Display(Name = "勤工俭学")] WorkStudy = 3,

    /// <summary>
    ///     顶岗实习
    /// </summary>
    [Display(Name = "顶岗实习")] PostPractice = 4,

    /// <summary>
    ///     毕业
    /// </summary>
    [Display(Name = "毕业")] Graduation = 5,

    /// <summary>
    ///     参军
    /// </summary>
    [Display(Name = "参军")] JoinTheArmy = 6
}

注意上文中的第7点。

3.生成导入模板并填充数据

导入之前是不是得准备一份模板?对于我们,手写模板?这是不存在的。Magicodes.IE.Excel封装了根据DTO自动生成Excel导入模板的方法,我们可以直接调用。这里我们来看下导入的相关方法:

/// <summary>
///     导入
/// </summary>
public interface IImporter
{
    /// <summary>
    ///     生成Excel导入模板
    /// </summary>
    /// <typeparam name="T"></typeparam>
    /// <returns></returns>
    Task<TemplateFileInfo> GenerateTemplate<T>(string fileName) where T : class, new();

    /// <summary>
    ///     生成Excel导入模板
    /// </summary>
    /// <typeparam name="T"></typeparam>
    /// <returns>二进制字节</returns>
    Task<byte[]> GenerateTemplateBytes<T>() where T : class, new();

    /// <summary>
    ///     导入模型验证数据
    /// </summary>
    /// <typeparam name="T"></typeparam>
    /// <param name="filePath"></param>
    /// <returns></returns>
    Task<ImportResult<T>> Import<T>(string filePath) where T : class, new();
}

通过以上方法中的GenerateTemplate,我们可以得到需要的导入模板。具体使用可以参考以下单元测试:

public IImporter Importer = new ExcelImporter();

    [Fact(DisplayName = "生成学生数据导入模板(测试枚举生成模板)")]
    public async Task GenerateStudentImportTemplate_Test()
    {
        var filePath = Path.Combine(Directory.GetCurrentDirectory(),
            nameof(GenerateStudentImportTemplate_Test) + ".xlsx");
        if (File.Exists(filePath)) File.Delete(filePath);

        var result = await Importer.GenerateTemplate<ImportStudentDto>(filePath);
        result.ShouldNotBeNull();
        File.Exists(filePath).ShouldBeTrue();

        //TODO:读取Excel检查表头和格式
    }

以上DTO获取模板并填充数据后如下图所示:

注意:枚举会自动生成下拉选择,必填项列头会标红。

4.获取学生导入验证错误和数据

根据模板填充数据后,我们就可以进行数据导入了。通常情况下,我们有以下步骤:

客户说虽然你提示了,但是我还是不知道哪里错了!!怎么办?!!

我们贴心的为你准备了导入数据的Excel文件的标注:

如何开启这个【史诗剧情】呢?仅需:

[ExcelImporter(IsLabelingError = true)]

开启后,我们将自动保存“{目标文件名称}_.xlsx”的标注文件到目标位置。

没有错误了?也就是HasError为false,那么我们就可以直接拿到Data为所欲为了!

最后

整个学生数据的导入教程就此结束了。相关库会一直更新,在功能体验上有可能会和本文教程有细微的出入,请以相关具体代码、版本日志、单元测试示例为准。

标签:教程,set,Name,get,ImporterHeader,导入,Magicodes,IE,public
来源: https://www.cnblogs.com/codelove/p/11955859.html