服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - ASP.NET教程 - ASP.NET开源导入导出库Magicodes.IE完成Csv导入导出的方法

ASP.NET开源导入导出库Magicodes.IE完成Csv导入导出的方法

2020-07-02 15:24HueiFeng ASP.NET教程

这篇文章主要介绍了ASP.NET开源导入导出库Magicodes.IE完成Csv导入导出的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

说明

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

关于Magicodes.IE

导入导出通用库,通过导入导出DTO模型来控制导入和导出,支持Excel、Word、Pdf和Html。

GitHub地址:https://github.com/xin-lai/Magicodes.IE

主要步骤

1.安装包Magicodes.IE.Csv

?
1
Install-Package Magicodes.IE.Csv

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

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

ExporterHeaderAttribute

  • DisplayName: 显示名称
  • Format: 格式化
  • IsIgnore: 是否忽略
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
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导出

?
1
2
3
4
5
6
7
8
9
10
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对枚举类型进行相关的映射,并向我们返回相对应的值

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
   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 Csv导入导出内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://www.cnblogs.com/yyfh/p/12886258.html

延伸 · 阅读

精彩推荐