ASP.NET 开源导入导出库Magicodes.IE 完成Csv导入导出
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导入导出的更多相关文章
- ASP.NET 开源导入导出库Magicodes.IE 多Sheet导入教程
多Sheet导入教程 说明 本教程主要说明如何使用Magicodes.IE.Excel完成多个Sheet数据的Excel导入. 要点 多个相同格式的Sheet数据导入 多个不同格式的Sheet数据导入 ...
- 开源导入导出库Magicodes.IE 多sheet导入教程
原文作者:tanyongzheng 多Sheet导入教程 说明 本教程主要说明如何使用Magicodes.IE.Excel完成多个Sheet数据的Excel导入. 要点 多个相同格式的Sheet数据导 ...
- ASP.NET 开源导入导出库Magicodes.IE 完成Excel图片导入导出
Magicodes.IE Excel图片导入导出 为了更好的根据实际功能来迭代,从2.2的里程碑规划开始,我们将结合社区的建议和意见来进行迭代,您可以点此链接来提交您的意见和建议: https://g ...
- .NET 开源导入导出库 Magicodes.IE 2.5发布
今天我们发布了2.5版本,这当然也离不开大家对Magicodes.IE的支持,今天我也是跟往常一样列举了该版本一些重要的更新内容. 当然也要说一下,在这个版本中我们设计了全新的LOGO Excel导出 ...
- 开源导入导出库Magicodes.IE 导出教程
要点 导出特性 如何导出Excel表头 如何导出数据.如何进行数据的切割.如何使用筛选器 导出特性 ExporterAttribute Name: 名称(当前Sheet 名称) HeaderFontS ...
- .NET Core开源导入导出库 Magicodes.IE 2.3发布
在2.3这一版本的更新中,我们迎来了众多的使用者.贡献者,在这个里程碑中我们也添加并修复了一些功能.对于新特点的功能我将在下面进行详细的描述,当然也欢迎更多的人可以加入进来,再或者也很期待大家来提is ...
- ASP.NET 开源导入导出库Magicodes.IE 导出Pdf教程
基础教程之导出Pdf收据 说明 本教程主要说明如何使用Magicodes.IE.Pdf完成Pdf收据导出 要点 导出PDF数据 自定义PDF模板 导出单据 如何批量导出单据 导出特性 PdfExpor ...
- 关于Eclipse 和 IDEA 导入library库文件 的步骤
这里我们以PullToRefresh(上拉刷新下拉加载)组件的library为例 下载地址: https://github.com/chrisbanes/Android-PullToRefresh 现 ...
- 开源导入导出通用库Magicodes.ExporterAndImporter发布
导入导出通用库 Magicodes.ExporterAndImporter为心莱团队封装的导入导出通用库,并且仍在跟随项目不断地打磨. GitHub地址: https://github.com/xin ...
随机推荐
- 批量重命名脚本(Python)
便携的批处理脚本,代码如下: import os import sys def rename(): path=input("请输入路径(例如D:/picture):") name= ...
- java面试题(一年工作经验)的心得
看面试题 正常人第一步肯定都会看面试题,我也不例外,在看的过程中,我发现有些文章写的不错,对我帮助不小值得推荐,如下: Java面试题全集(上) 很多基础的东西,建议先看. 各大公司Java后端开发面 ...
- phpMyAdmin后台文件包含溯源
先上大佬解释的漏洞原理链接 https://mp.weixin.qq.com/s?__biz=MzIzMTc1MjExOQ==&mid=2247485036&idx=1&sn= ...
- 什么是CDN内容分发网络?【刘新宇】
CDN 使用第三方OSS服务的好处是集成了CDN服务,下面来了解一下什么是CDN. CDN 全称:Content Delivery Network或Content Distribute Network ...
- 在Thinkphp中微信公众号JsApi支付
由于网站使用的微信Native扫码支付,现在公众号需要接入功能,怎么办呢,看这官方文档,参考着demo进行写吧.直接进入正题 进入公众号(服务号)设置--->功能设置--->网页授权域名配 ...
- PHP(ThinkPHP5.0) + PHPMailer 进行邮箱发送验证码
GitHub下载最新版第三方类库PHPMailer: 第一步: 打开网址https://github.com/PHPMailer/PHPMailer/ 下载PHPMailer,PHPMailer 需要 ...
- 给动态ajax添加的元素添加click事件
$(document).on('click','div',function(){alert(1)}); .live()方法也是可以的
- mysql---3种常用引擎 和优点
- [Linux] 检查是否已有进程在运行
出处:sblim-sfcb-1.4.9 / sfcBroker.c int process_is_running() { #define STRBUF_LEN 512 #define BUF_LEN ...
- Libra教程之:运行自定义move modules
文章目录 简介 创建Move modules 启动本地网络 创建账号并送测试币 编译Move Module 发布编译好的Module 创建交易脚本 编译编译脚本 执行脚本 简介 因为Libra和Mov ...