ASP.NET開(kāi)源導(dǎo)入導(dǎo)出庫(kù)Magicodes.IE完成Csv導(dǎo)入導(dǎo)出的方法
說(shuō)明
本章主要說(shuō)明如何使用Magicodes.IE.Csv進(jìn)行Csv導(dǎo)入導(dǎo)出.
關(guān)于Magicodes.IE
導(dǎo)入導(dǎo)出通用庫(kù),通過(guò)導(dǎo)入導(dǎo)出DTO模型來(lái)控制導(dǎo)入和導(dǎo)出,支持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導(dǎo)出Csv
通過(guò)如下代碼片段我們將導(dǎo)出的內(nèi)容通過(guò)相應(yīng)的特性做出相應(yīng)的處理.
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> /// 時(shí)間測(cè)試 /// </summary> [ExporterHeader(DisplayName = "日期1", Format = "yyyy-MM-dd")] public DateTime Time1 { get; set; } /// <summary> /// 時(shí)間測(cè)試 /// </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> /// 長(zhǎng)數(shù)值測(cè)試 /// </summary> [ExporterHeader(DisplayName = "長(zhǎng)數(shù)值", Format = "#,##0")] public long LongNo { get; set; } }
通過(guò)DTO導(dǎo)出
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導(dǎo)入Csv
對(duì)于csv導(dǎo)入我們可以通過(guò),ImporterHeader Name屬性去對(duì)應(yīng)我們的Dto屬性.并且可以通過(guò)ValueMapping對(duì)枚舉類型進(jìn)行相關(guān)的映射,并向我們返回相對(duì)應(yīng)的值
public async Task StudentInfoImporter_Test() { var filePath = Path.Combine(Directory.GetCurrentDirectory(), "TestFiles", "Import", "學(xué)生基礎(chǔ)數(shù)據(jù)導(dǎo)入.csv"); var import = await Importer.Import<ImportStudentDto>(filePath); } /// <summary> /// 導(dǎo)入學(xué)生數(shù)據(jù)Dto /// </summary> public class ImportStudentDto { /// <summary> /// 序號(hào) /// </summary> [ImporterHeader(Name = "序號(hào)")] public long SerialNumber { get; set; } /// <summary> /// 學(xué)籍號(hào) /// </summary> [ImporterHeader(Name = "學(xué)籍號(hào)")] public string StudentCode { get; set; } /// <summary> /// 姓名 /// </summary> [ImporterHeader(Name = "姓名")] public string Name { get; set; } /// <summary> /// 身份證號(hào)碼 /// </summary> [ImporterHeader(Name = "身份證號(hào)")] 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> /// 家長(zhǎng)姓名 /// </summary> [ImporterHeader(Name = "家長(zhǎng)姓名")] public string Guardian { get; set; } /// <summary> /// 家長(zhǎng)聯(lián)系電話 /// </summary> [ImporterHeader(Name = "家長(zhǎng)聯(lián)系電話")] public string GuardianPhone { get; set; } /// <summary> /// 學(xué)號(hào) /// </summary> [ImporterHeader(Name = "學(xué)號(hào)")] public string StudentNub { get; set; } /// <summary> /// 宿舍號(hào) /// </summary> [ImporterHeader(Name = "宿舍號(hào)")] public string DormitoryNo { get; set; } /// <summary> /// QQ /// </summary> [ImporterHeader(Name = "QQ號(hào)")] 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 = "學(xué)生聯(lián)系電話")] public string Phone { get; set; } /// <summary> /// 狀態(tài) /// 測(cè)試可為空的枚舉類型 /// </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> /// 所屬班級(jí)id /// </summary> [ImporterHeader(IsIgnore = true)] public Guid ClassId { get; set; } /// <summary> /// 學(xué)校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> /// 年級(jí)Id /// </summary> [ImporterHeader(IsIgnore = true)] public Guid? GradeId { get; set; } }
Reference
https://github.com/dotnetcore/Magicodes.IE
到此這篇關(guān)于ASP.NET開(kāi)源導(dǎo)入導(dǎo)出庫(kù)Magicodes.IE完成Csv導(dǎo)入導(dǎo)出的方法的文章就介紹到這了,更多相關(guān)ASP.NET Csv導(dǎo)入導(dǎo)出內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
ASP.Net中數(shù)據(jù)展示控件的嵌套使用示例
ASP.Net中數(shù)據(jù)展示控件的嵌套使用,在Repeater里面嵌套一個(gè)GridView,將每個(gè)User的任務(wù)展示出來(lái)2014-09-09ASP.NET Internet安全Forms身份驗(yàn)證方法
安全性是 ASP.NET Web 應(yīng)用程序中一個(gè)非常重要的方面,它涉及內(nèi)容非常廣泛,不能在一篇文章內(nèi)說(shuō)明所有的安全規(guī)范,本文講述如何利用IIS以及Forms 身份驗(yàn)證構(gòu)建安全的 ASP.NET 應(yīng)用程序,它是目前被使用最多最廣的驗(yàn)證/授權(quán)方式.2009-12-12Asp.Net平臺(tái)下的圖片在線裁剪功能的實(shí)現(xiàn)代碼(源碼打包)
最近項(xiàng)目中有個(gè)圖片在線裁剪功能,本人查找資料,方法如下:前臺(tái)展現(xiàn)用jquery.Jcrop實(shí)現(xiàn),后臺(tái)使用 System.Drawing.Image類來(lái)進(jìn)行裁剪2011-10-10asp.net 通過(guò)httpModule計(jì)算頁(yè)面的執(zhí)行時(shí)間
有時(shí)候我們想檢測(cè)一下網(wǎng)頁(yè)的執(zhí)行效率。記錄下開(kāi)始請(qǐng)求時(shí)的時(shí)間和頁(yè)面執(zhí)行完畢后的時(shí)間點(diǎn),這段時(shí)間差就是頁(yè)面的執(zhí)行時(shí)間了。要實(shí)現(xiàn)這個(gè)功能,通過(guò)HttpModule來(lái)實(shí)現(xiàn)是最方便而且準(zhǔn)確的。2011-02-02OpenCV 3.1.0+VS2015開(kāi)發(fā)環(huán)境配置教程
這篇文章主要為大家詳細(xì)介紹了OpenCV 3.1.0+VS2015開(kāi)發(fā)環(huán)境配置教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-11-11