Magicodes.IE Csv导入导出

说明

本章主要说明如何使用Magicodes.IE.Csv进行Csv导入导出.

主要步骤

1.安装包Magicodes.IE.Csv

Install-Package Magicodes.IE.Csv

2.使用Magicodes.IE.Csv导出Csv

通过如下代码片段我们将导出的内容通过相应的特性做出相应的处理.

ExporterHeaderAttribute

  • DisplayName: 显示名称
  • Format: 格式化
  • IsIgnore: 是否忽略
    public class ExportTestDataWithAttrs
{
[ExporterHeader(DisplayName = "文本")]
public string Text { get; set; }
[ExporterHeader(DisplayName = "普通文本")] public string Text2 { get; set; }
[ExporterHeader(DisplayName = "忽略", IsIgnore = true)]
public string Text3 { get; set; }
[ExporterHeader(DisplayName = "数值", Format = "#,##0")]
public decimal Number { get; set; }
[ExporterHeader(DisplayName = "名称", IsAutoFit = true)]
public string Name { get; set; } /// <summary>
/// 时间测试
/// </summary>
[ExporterHeader(DisplayName = "日期1", Format = "yyyy-MM-dd")]
public DateTime Time1 { get; set; } /// <summary>
/// 时间测试
/// </summary>
[ExporterHeader(DisplayName = "日期2", Format = "yyyy-MM-dd HH:mm:ss")]
public DateTime? Time2 { get; set; } public DateTime Time3 { get; set; } public DateTime Time4 { get; set; } /// <summary>
/// 长数值测试
/// </summary>
[ExporterHeader(DisplayName = "长数值", Format = "#,##0")]
public long LongNo { get; set; }
}

通过DTO导出

        public async Task ExportHeaderAsByteArray_Test()
{
IExporter exporter = new CsvExporter(); var filePath = GetTestFilePath($"{nameof(ExportHeaderAsByteArray_Test)}.csv"); DeleteFile(filePath); var result = await exporter.ExportHeaderAsByteArray(GenFu.GenFu.New<ExportTestDataWithAttrs>());
}

3.使用Magicodes.IE.Csv导入Csv

对于csv导入我们可以通过,ImporterHeader Name属性去对应我们的Dto属性.并且可以通过ValueMapping对枚举类型进行相关的映射,并向我们返回相对应的值

        public async Task StudentInfoImporter_Test()
{
var filePath = Path.Combine(Directory.GetCurrentDirectory(), "TestFiles", "Import", "学生基础数据导入.csv");
var import = await Importer.Import<ImportStudentDto>(filePath);
}
 /// <summary>
/// 导入学生数据Dto
/// </summary>
public class ImportStudentDto
{
/// <summary>
/// 序号
/// </summary>
[ImporterHeader(Name = "序号")]
public long SerialNumber { get; set; } /// <summary>
/// 学籍号
/// </summary>
[ImporterHeader(Name = "学籍号")]
public string StudentCode { get; set; }
/// <summary>
/// 姓名
/// </summary>
[ImporterHeader(Name = "姓名")]
public string Name { get; set; } /// <summary>
/// 身份证号码
/// </summary>
[ImporterHeader(Name = "身份证号")]
public string IdCard { get; set; } /// <summary>
/// 性别
/// </summary>
[ImporterHeader(Name = "性别")]
[ValueMapping("男", 0)]
[ValueMapping("女", 1)]
public Genders Gender { get; set; } /// <summary>
/// 家庭地址
/// </summary>
[ImporterHeader(Name = "家庭住址")]
public string Address { get; set; } /// <summary>
/// 家长姓名
/// </summary>
[ImporterHeader(Name = "家长姓名")]
public string Guardian { get; set; } /// <summary>
/// 家长联系电话
/// </summary>
[ImporterHeader(Name = "家长联系电话")]
public string GuardianPhone { get; set; } /// <summary>
/// 学号
/// </summary>
[ImporterHeader(Name = "学号")]
public string StudentNub { get; set; } /// <summary>
/// 宿舍号
/// </summary>
[ImporterHeader(Name = "宿舍号")]
public string DormitoryNo { get; set; } /// <summary>
/// QQ
/// </summary>
[ImporterHeader(Name = "QQ号")]
public string QQ { get; set; } /// <summary>
/// 民族
/// </summary>
[ImporterHeader(Name = "民族")]
public string Nation { get; set; } /// <summary>
/// 户口性质
/// </summary>
[ImporterHeader(Name = "户口性质")]
public string HouseholdType { get; set; } /// <summary>
/// 联系电话
/// </summary>
[ImporterHeader(Name = "学生联系电话")]
public string Phone { get; set; } /// <summary>
/// 状态
/// 测试可为空的枚举类型
/// </summary>
[ImporterHeader(Name = "状态")]
public StudentStatus? Status { get; set; } /// <summary>
/// 备注
/// </summary>
[ImporterHeader(Name = "备注")]
public string Remark { get; set; } /// <summary>
/// 是否住校(宿舍)
/// </summary>
[ImporterHeader(IsIgnore = true)]
public bool? IsBoarding { get; set; } /// <summary>
/// 所属班级id
/// </summary>
[ImporterHeader(IsIgnore = true)]
public Guid ClassId { get; set; } /// <summary>
/// 学校Id
/// </summary>
[ImporterHeader(IsIgnore = true)]
public Guid? SchoolId { get; set; } /// <summary>
/// 校区Id
/// </summary>
[ImporterHeader(IsIgnore = true)]
public Guid? CampusId { get; set; } /// <summary>
/// 专业Id
/// </summary>
[ImporterHeader(IsIgnore = true)]
public Guid? MajorsId { get; set; } /// <summary>
/// 年级Id
/// </summary>
[ImporterHeader(IsIgnore = true)]
public Guid? GradeId { get; set; }
}

Reference

https://github.com/dotnetcore/Magicodes.IE

ASP.NET 开源导入导出库Magicodes.IE 完成Csv导入导出的更多相关文章

  1. ASP.NET 开源导入导出库Magicodes.IE 多Sheet导入教程

    多Sheet导入教程 说明 本教程主要说明如何使用Magicodes.IE.Excel完成多个Sheet数据的Excel导入. 要点 多个相同格式的Sheet数据导入 多个不同格式的Sheet数据导入 ...

  2. 开源导入导出库Magicodes.IE 多sheet导入教程

    原文作者:tanyongzheng 多Sheet导入教程 说明 本教程主要说明如何使用Magicodes.IE.Excel完成多个Sheet数据的Excel导入. 要点 多个相同格式的Sheet数据导 ...

  3. ASP.NET 开源导入导出库Magicodes.IE 完成Excel图片导入导出

    Magicodes.IE Excel图片导入导出 为了更好的根据实际功能来迭代,从2.2的里程碑规划开始,我们将结合社区的建议和意见来进行迭代,您可以点此链接来提交您的意见和建议: https://g ...

  4. .NET 开源导入导出库 Magicodes.IE 2.5发布

    今天我们发布了2.5版本,这当然也离不开大家对Magicodes.IE的支持,今天我也是跟往常一样列举了该版本一些重要的更新内容. 当然也要说一下,在这个版本中我们设计了全新的LOGO Excel导出 ...

  5. 开源导入导出库Magicodes.IE 导出教程

    要点 导出特性 如何导出Excel表头 如何导出数据.如何进行数据的切割.如何使用筛选器 导出特性 ExporterAttribute Name: 名称(当前Sheet 名称) HeaderFontS ...

  6. .NET Core开源导入导出库 Magicodes.IE 2.3发布

    在2.3这一版本的更新中,我们迎来了众多的使用者.贡献者,在这个里程碑中我们也添加并修复了一些功能.对于新特点的功能我将在下面进行详细的描述,当然也欢迎更多的人可以加入进来,再或者也很期待大家来提is ...

  7. ASP.NET 开源导入导出库Magicodes.IE 导出Pdf教程

    基础教程之导出Pdf收据 说明 本教程主要说明如何使用Magicodes.IE.Pdf完成Pdf收据导出 要点 导出PDF数据 自定义PDF模板 导出单据 如何批量导出单据 导出特性 PdfExpor ...

  8. 关于Eclipse 和 IDEA 导入library库文件 的步骤

    这里我们以PullToRefresh(上拉刷新下拉加载)组件的library为例 下载地址: https://github.com/chrisbanes/Android-PullToRefresh 现 ...

  9. 开源导入导出通用库Magicodes.ExporterAndImporter发布

    导入导出通用库 Magicodes.ExporterAndImporter为心莱团队封装的导入导出通用库,并且仍在跟随项目不断地打磨. GitHub地址: https://github.com/xin ...

随机推荐

  1. Linux学习笔记(一)目录处理命令

    目录处理命令 ls cd mkdir rmdir tree ls 英文原意: list 功能: 显示目录文件 语法: ls 选项[-ald] [文件或目录] ls -a 显示所有文件,包括隐藏文件 l ...

  2. shiro:入门程序(一)

    SpringMVC项目 1:pom引入相关依赖 <dependencies> <!--测试依赖--> <dependency> <groupId>jun ...

  3. Jmeter系列(2)- Jmeter工具介绍、Jmeter安装目录介绍、Jmeter面板介绍

    如果你想从头学习Jmeter,可以看看这个系列的文章哦 https://www.cnblogs.com/poloyy/category/1746599.html Jmeter支持哪些测试场景? Jme ...

  4. python 规范篇 如何合理使用 assert

    assert 的合理使用,可以增加代码的健壮度,同时也方便了程序出错时开发人员的定位排查. 什么是 assert? Python 的 assert 语句,可以说是一个 debug 的好工具,主要用于测 ...

  5. tensorflow1.0 数据队列FIFOQueue的使用

    import tensorflow as tf #模拟一下同步先处理数据,然后才能取数据训练 #tensorflow当中,运行操作有依赖性 #1.首先定义队列 Q = tf.FIFOQueue(3,t ...

  6. spring-boot-lll-starter自动化框架介绍

    1. spring-boot-lll-starter自动化框架介绍 1.1. 前言 舔着脸来介绍一波我刚写的自动化框架,spring-boot-lll-starter框架是经由我企业实战总结的一套,适 ...

  7. 0day堆(2)堆的调试实验

    堆的调试实验 调试态堆管理策略和常态堆管理策略:前者只使用空表不用块表,不真实 使用调试器加载函数会触发前者 __asm int3 调试最真实的栈 未启用块表的堆区信息 堆区起始位置(假设为0x005 ...

  8. java中functional interface的分类和使用

    目录 简介 Functional Interface Function:一个参数一个返回值 BiFunction:接收两个参数,一个返回值 Supplier:无参的Function Consumer: ...

  9. hdu_1052 Tian Ji -- The Horse Racing 贪心

    Tian Ji -- The Horse Racing Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (J ...

  10. spark系列-2、Spark 核心数据结构:弹性分布式数据集 RDD

    一.RDD(弹性分布式数据集) RDD 是 Spark 最核心的数据结构,RDD(Resilient Distributed Dataset)全称为弹性分布式数据集,是 Spark 对数据的核心抽象, ...