Skip to content

Commit 8914f7e

Browse files
committed
更新文档
1 parent 6e6a95a commit 8914f7e

File tree

2 files changed

+450
-0
lines changed

2 files changed

+450
-0
lines changed

docs/7.Csv Import and Export.md

Lines changed: 236 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,236 @@
1+
# Magicodes.IE Csv Import and Export
2+
3+
## Description
4+
5+
This article mainly describes how to use Magicodes.IE.Csv to import and export Csv files.
6+
7+
## Main Content
8+
9+
### 1. Install Magicodes.IE.Csv
10+
11+
```powershell
12+
Install-Package Magicodes.IE.Csv
13+
```
14+
15+
### 2. Use Magicodes.IE.Csv to Export Csv
16+
17+
Through the following code snippets, we will demonstrate how to export Csv through DTO and corresponding attributes.
18+
19+
**ExporterHeaderAttribute**
20+
- DisplayName: Display name
21+
- Format: Format string
22+
- IsIgnore: Whether to ignore
23+
24+
```csharp
25+
public class ExportTestDataWithAttrs
26+
{
27+
[ExporterHeader(DisplayName = "Large Text")]
28+
public string Text { get; set; }
29+
[ExporterHeader(DisplayName = "Normal Text")] public string Text2 { get; set; }
30+
[ExporterHeader(DisplayName = "Ignore", IsIgnore = true)]
31+
public string Text3 { get; set; }
32+
[ExporterHeader(DisplayName = "Number", Format = "#,##0")]
33+
public decimal Number { get; set; }
34+
[ExporterHeader(DisplayName = "Name", IsAutoFit = true)]
35+
public string Name { get; set; }
36+
37+
/// <summary>
38+
/// Time field 1
39+
/// </summary>
40+
[ExporterHeader(DisplayName = "Time1", Format = "yyyy-MM-dd")]
41+
public DateTime Time1 { get; set; }
42+
43+
/// <summary>
44+
/// Time field 2
45+
/// </summary>
46+
[ExporterHeader(DisplayName = "Time2", Format = "yyyy-MM-dd HH:mm:ss")]
47+
public DateTime? Time2 { get; set; }
48+
49+
public DateTime Time3 { get; set; }
50+
51+
public DateTime Time4 { get; set; }
52+
53+
/// <summary>
54+
/// Long value field
55+
/// </summary>
56+
[ExporterHeader(DisplayName = "Long Value", Format = "#,##0")]
57+
public long LongNo { get; set; }
58+
}
59+
```
60+
61+
Export through DTO:
62+
63+
```csharp
64+
public async Task ExportHeaderAsByteArray_Test()
65+
{
66+
IExporter exporter = new CsvExporter();
67+
68+
var filePath = GetTestFilePath($"{nameof(ExportHeaderAsByteArray_Test)}.csv");
69+
70+
DeleteFile(filePath);
71+
72+
var result = await exporter.ExportHeaderAsByteArray(GenFu.GenFu.New<ExportTestDataWithAttrs>());
73+
}
74+
75+
```
76+
77+
78+
### 3. Use Magicodes.IE.Csv to Import Csv
79+
80+
For csv import, we can map to our Dto properties through the **ImporterHeader** Name attribute. And we can get enumeration types and related mappings through **ValueMapping**, which can help us convert corresponding values.
81+
82+
```csharp
83+
public async Task StudentInfoImporter_Test()
84+
{
85+
var filePath = Path.Combine(Directory.GetCurrentDirectory(), "TestFiles", "Import", "StudentInfo.csv");
86+
var import = await Importer.Import<ImportStudentDto>(filePath);
87+
}
88+
```
89+
90+
```csharp
91+
/// <summary>
92+
/// Import student data Dto
93+
/// </summary>
94+
public class ImportStudentDto
95+
{
96+
/// <summary>
97+
/// Serial number
98+
/// </summary>
99+
[ImporterHeader(Name = "Serial Number")]
100+
public long SerialNumber { get; set; }
101+
102+
/// <summary>
103+
/// Student code
104+
/// </summary>
105+
[ImporterHeader(Name = "Student Code")]
106+
public string StudentCode { get; set; }
107+
/// <summary>
108+
/// Name
109+
/// </summary>
110+
[ImporterHeader(Name = "Name")]
111+
public string Name { get; set; }
112+
113+
/// <summary>
114+
/// ID card number
115+
/// </summary>
116+
[ImporterHeader(Name = "ID Card")]
117+
public string IdCard { get; set; }
118+
119+
/// <summary>
120+
/// Gender
121+
/// </summary>
122+
[ImporterHeader(Name = "Gender")]
123+
[ValueMapping("Male", 0)]
124+
[ValueMapping("Female", 1)]
125+
public Genders Gender { get; set; }
126+
127+
/// <summary>
128+
/// Home address
129+
/// </summary>
130+
[ImporterHeader(Name = "Home Address")]
131+
public string Address { get; set; }
132+
133+
/// <summary>
134+
/// Guardian name
135+
/// </summary>
136+
[ImporterHeader(Name = "Guardian Name")]
137+
public string Guardian { get; set; }
138+
139+
/// <summary>
140+
/// Guardian phone
141+
/// </summary>
142+
[ImporterHeader(Name = "Guardian Phone")]
143+
public string GuardianPhone { get; set; }
144+
145+
/// <summary>
146+
/// Student number
147+
/// </summary>
148+
[ImporterHeader(Name = "Student Number")]
149+
public string StudentNub { get; set; }
150+
151+
/// <summary>
152+
/// Dormitory number
153+
/// </summary>
154+
[ImporterHeader(Name = "Dormitory Number")]
155+
public string DormitoryNo { get; set; }
156+
157+
/// <summary>
158+
/// QQ
159+
/// </summary>
160+
[ImporterHeader(Name = "QQ Number")]
161+
public string QQ { get; set; }
162+
163+
/// <summary>
164+
/// Nation
165+
/// </summary>
166+
[ImporterHeader(Name = "Nation")]
167+
public string Nation { get; set; }
168+
169+
/// <summary>
170+
/// Household type
171+
/// </summary>
172+
[ImporterHeader(Name = "Household Type")]
173+
public string HouseholdType { get; set; }
174+
175+
/// <summary>
176+
/// Phone
177+
/// </summary>
178+
[ImporterHeader(Name = "Student Phone")]
179+
public string Phone { get; set; }
180+
181+
/// <summary>
182+
/// Status
183+
/// Can be empty enumeration
184+
/// </summary>
185+
[ImporterHeader(Name = "Status")]
186+
public StudentStatus? Status { get; set; }
187+
188+
/// <summary>
189+
/// Remark
190+
/// </summary>
191+
[ImporterHeader(Name = "Remark")]
192+
public string Remark { get; set; }
193+
194+
/// <summary>
195+
/// Whether boarding (ignore)
196+
/// </summary>
197+
[ImporterHeader(IsIgnore = true)]
198+
public bool? IsBoarding { get; set; }
199+
200+
/// <summary>
201+
/// Class id
202+
/// </summary>
203+
[ImporterHeader(IsIgnore = true)]
204+
public Guid ClassId { get; set; }
205+
206+
/// <summary>
207+
/// School Id
208+
/// </summary>
209+
[ImporterHeader(IsIgnore = true)]
210+
public Guid? SchoolId { get; set; }
211+
212+
/// <summary>
213+
/// Campus Id
214+
/// </summary>
215+
[ImporterHeader(IsIgnore = true)]
216+
public Guid? CampusId { get; set; }
217+
218+
/// <summary>
219+
/// Major Id
220+
/// </summary>
221+
[ImporterHeader(IsIgnore = true)]
222+
public Guid? MajorsId { get; set; }
223+
224+
/// <summary>
225+
/// Grade Id
226+
/// </summary>
227+
[ImporterHeader(IsIgnore = true)]
228+
public Guid? GradeId { get; set; }
229+
}
230+
231+
```
232+
233+
## Reference
234+
235+
https://github.com/dotnetcore/Magicodes.IE
236+

0 commit comments

Comments
 (0)