ASP.NET開源導入導出庫Magicodes.IE完成Csv導入導出的方法
說明
本章主要說明如何使用Magicodes.IE.Csv進行Csv導入導出.
關(guān)于Magicodes.IE
導入導出通用庫,通過導入導出DTO模型來控制導入和導出,支持Excel、Word、Pdf和Html。
GitHub地址:https://github.com/xin-lai/Magicodes.IE
主要步驟
1.安裝包Magicodes.IE.Csv
Install-Package Magicodes.IE.Csv
2.使用Magicodes.IE.Csv導出Csv
通過如下代碼片段我們將導出的內(nèi)容通過相應的特性做出相應的處理.
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 = "數(shù)值", 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> /// 長數(shù)值測試 /// </summary> [ExporterHeader(DisplayName = "長數(shù)值", 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對枚舉類型進行相關(guān)的映射,并向我們返回相對應的值
public async Task StudentInfoImporter_Test() { var filePath = Path.Combine(Directory.GetCurrentDirectory(), "TestFiles", "Import", "學生基礎(chǔ)數(shù)據(jù)導入.csv"); var import = await Importer.Import<ImportStudentDto>(filePath); } /// <summary> /// 導入學生數(shù)據(jù)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> /// 家長聯(lián)系電話 /// </summary> [ImporterHeader(Name = "家長聯(lián)系電話")] 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> /// 戶口性質(zhì) /// </summary> [ImporterHeader(Name = "戶口性質(zhì)")] public string HouseholdType { get; set; } /// <summary> /// 聯(lián)系電話 /// </summary> [ImporterHeader(Name = "學生聯(lián)系電話")] public string Phone { get; set; } /// <summary> /// 狀態(tài) /// 測試可為空的枚舉類型 /// </summary> [ImporterHeader(Name = "狀態(tài)")] 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> /// 校區(qū)Id /// </summary> [ImporterHeader(IsIgnore = true)] public Guid? CampusId { get; set; } /// <summary> /// 專業(yè)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
到此這篇關(guān)于ASP.NET開源導入導出庫Magicodes.IE完成Csv導入導出的方法的文章就介紹到這了,更多相關(guān)ASP.NET Csv導入導出內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
ASP.Net中數(shù)據(jù)展示控件的嵌套使用示例
ASP.Net中數(shù)據(jù)展示控件的嵌套使用,在Repeater里面嵌套一個GridView,將每個User的任務展示出來2014-09-09Asp.Net平臺下的圖片在線裁剪功能的實現(xiàn)代碼(源碼打包)
最近項目中有個圖片在線裁剪功能,本人查找資料,方法如下:前臺展現(xiàn)用jquery.Jcrop實現(xiàn),后臺使用 System.Drawing.Image類來進行裁剪2011-10-10asp.net 通過httpModule計算頁面的執(zhí)行時間
有時候我們想檢測一下網(wǎng)頁的執(zhí)行效率。記錄下開始請求時的時間和頁面執(zhí)行完畢后的時間點,這段時間差就是頁面的執(zhí)行時間了。要實現(xiàn)這個功能,通過HttpModule來實現(xiàn)是最方便而且準確的。2011-02-02OpenCV 3.1.0+VS2015開發(fā)環(huán)境配置教程
這篇文章主要為大家詳細介紹了OpenCV 3.1.0+VS2015開發(fā)環(huán)境配置教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-11-11