日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

开源导入导出库Magicodes.IE 多sheet导入教程

發(fā)布時間:2023/12/4 编程问答 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 开源导入导出库Magicodes.IE 多sheet导入教程 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

多Sheet導入教程說明

本教程主要說明如何使用Magicodes.IE.Excel完成多個Sheet數(shù)據(jù)的Excel導入。

要點

  • 多個相同格式的Sheet數(shù)據(jù)導入

  • 多個不同格式的Sheet數(shù)據(jù)導入

主要步驟

1. 多個相同格式的Sheet數(shù)據(jù)導入

1.1 創(chuàng)建導入Sheet的Dto

主要代碼如下所示:

  • 學生數(shù)據(jù)Dto

/// <summary>/// 導入學生數(shù)據(jù)Dto/// IsLabelingError:是否標注數(shù)據(jù)錯誤/// </summary> [ExcelImporter(IsLabelingError = true)]public class ImportStudentDto {/// <summary>/// 序號/// </summary>[ImporterHeader(Name = "序號")]public long SerialNumber { get; set; }/// <summary>/// 學籍號/// </summary>[ImporterHeader(Name = "學籍號", IsAllowRepeat = false)][MaxLength(30, ErrorMessage = "學籍號字數(shù)超出最大限制,請修改!")]public string StudentCode { get; set; }/// <summary>/// 姓名/// </summary>[ImporterHeader(Name = "姓名")][Required(ErrorMessage = "學生姓名不能為空")][MaxLength(50, ErrorMessage = "名稱字數(shù)超出最大限制,請修改!")]public string Name { get; set; }/// <summary>/// 身份證號碼/// </summary>[ImporterHeader(Name = "身份證號", IsAllowRepeat = false)][Required(ErrorMessage = "身份證號不能為空")][MaxLength(18, ErrorMessage = "身份證字數(shù)超出最大限制,請修改!")]public string IdCard { get; set; }/// <summary>/// 性別/// </summary>[ImporterHeader(Name = "性別")][Required(ErrorMessage = "性別不能為空")][ValueMapping("男", 0)][ValueMapping("女", 1)]public Genders Gender { get; set; }/// <summary>/// 家庭地址/// </summary>[ImporterHeader(Name = "家庭住址")][Required(ErrorMessage = "家庭地址不能為空")][MaxLength(200, ErrorMessage = "家庭地址字數(shù)超出最大限制,請修改!")]public string Address { get; set; }/// <summary>/// 家長姓名/// </summary>[ImporterHeader(Name = "家長姓名")][Required(ErrorMessage = "家長姓名不能為空")][MaxLength(50, ErrorMessage = "家長姓名數(shù)超出最大限制,請修改!")]public string Guardian { get; set; }/// <summary>/// 家長聯(lián)系電話/// </summary>[ImporterHeader(Name = "家長聯(lián)系電話")][MaxLength(20, ErrorMessage = "家長聯(lián)系電話字數(shù)超出最大限制,請修改!")]public string GuardianPhone { get; set; }/// <summary>/// 學號/// </summary>[ImporterHeader(Name = "學號")][MaxLength(30, ErrorMessage = "學號字數(shù)超出最大限制,請修改!")]public string StudentNub { get; set; }/// <summary>/// 宿舍號/// </summary>[ImporterHeader(Name = "宿舍號")][MaxLength(20, ErrorMessage = "宿舍號字數(shù)超出最大限制,請修改!")]public string DormitoryNo { get; set; }/// <summary>/// QQ/// </summary>[ImporterHeader(Name = "QQ號")][MaxLength(30, ErrorMessage = "QQ號字數(shù)超出最大限制,請修改!")]public string QQ { get; set; }/// <summary>/// 民族/// </summary>[ImporterHeader(Name = "民族")][MaxLength(2, ErrorMessage = "民族字數(shù)超出最大限制,請修改!")]public string Nation { get; set; }/// <summary>/// 戶口性質(zhì)/// </summary>[ImporterHeader(Name = "戶口性質(zhì)")][MaxLength(10, ErrorMessage = "戶口性質(zhì)字數(shù)超出最大限制,請修改!")]public string HouseholdType { get; set; }/// <summary>/// 聯(lián)系電話/// </summary>[ImporterHeader(Name = "學生聯(lián)系電話")][MaxLength(20, ErrorMessage = "手機號碼字數(shù)超出最大限制,請修改!")]public string Phone { get; set; }/// <summary>/// 狀態(tài)/// 測試可為空的枚舉類型/// </summary>[ImporterHeader(Name = "狀態(tài)")]public StudentStatus? Status { get; set; }/// <summary>/// 備注/// </summary>[ImporterHeader(Name = "備注")][MaxLength(200, ErrorMessage = "備注字數(shù)超出最大限制,請修改!")]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; } }

1.2 創(chuàng)建導Excel入Dto

主要代碼如下所示:

  • 學生數(shù)據(jù)Dto

public class ImportClassStudentDto {[ExcelImporter(SheetName = "1班導入數(shù)據(jù)")]public ImportStudentDto Class1Students { get; set; }[ExcelImporter(SheetName = "2班導入數(shù)據(jù)")]public ImportStudentDto Class2Students { get; set; }}

如上述代碼所示,我們定義了班級學生數(shù)據(jù)Dto,主要注意事項如下:

  • Excel的Dto類上面不用導入相關(guān)的加特性。

  • Excel的Dto類里面的屬性未Sheet的Dto類型,ExcelImporter特性離的SheetName參數(shù)來設(shè)置具體某一個Sheet名。

  • 1.3 Excel模板

    注意:Excel里的多個Sheet列名必須一致(對應(yīng)同一個Sheet的Dto類型)

    模板目錄:src\Magicodes.ExporterAndImporter.Tests\TestFiles\Import\班級學生基礎(chǔ)數(shù)據(jù)導入.xlsx

    第一個Sheet:

    第二個Sheet:

    1.4 導入代碼

    IExcelImporter Importer = new ExcelImporter();var filePath = Path.Combine(Directory.GetCurrentDirectory(), "TestFiles", "Import", "班級學生基礎(chǔ)數(shù)據(jù)導入.xlsx");//獲取到的導入結(jié)果為一個字典類型,Key為Sheet名,Value為Sheet對應(yīng)的數(shù)據(jù) var importDic = await Importer.ImportSameSheets<ImportClassStudentDto, ImportStudentDto>(filePath);//遍歷字典,獲取每個Sheet的數(shù)據(jù) foreach (var item in importDic) {var import = item.Value;//導入的Sheet數(shù)據(jù)var studentList = import.Data.ToList(); }

    2. 多個不同格式的Sheet數(shù)據(jù)導入

    2.1 創(chuàng)建導入Sheet的Dto

    主要代碼如下所示:

    • 學生數(shù)據(jù)Dto同上

    • 繳費日志數(shù)據(jù)Dto :

    /// <summary>/// 繳費日志導入Dto/// </summary>/// <autogeneratedoc /> [ExcelImporter(IsLabelingError = true)]public class ImportPaymentLogDto {/// <summary>/// 學生姓名/// </summary>[ImporterHeader(Name = "學生姓名")][Required(ErrorMessage = "學生姓名為必填項")][MaxLength(30, ErrorMessage = "學生姓名不能超過15位")]public string Name { get; set; }/// <summary>/// 身份證號碼/// </summary>[ImporterHeader(Name = "身份證號碼")][Required(ErrorMessage = "身份證號碼為必填項")][MaxLength(18, ErrorMessage = "身份證號碼不能超過18位")][MinLength(18, ErrorMessage = "身份證號碼不能小于18位")]public string IdCard { get; set; }/// <summary>/// 繳費類型/// </summary>[ImporterHeader(Name = "繳費類型")][Required(ErrorMessage = "繳費類型為必填項")]public string CostType { get; set; }/// <summary>/// 金額/// </summary>[ImporterHeader(Name = "金額")][Range(0.01, 1000000, ErrorMessage = "收費金額區(qū)間為1~100萬")][Required(ErrorMessage = "金額為必填項")]public decimal Amount { get; set; }/// <summary>/// 繳費日期/// </summary>[ImporterHeader(Name = "繳費日期")][MaxLength(8, ErrorMessage = "繳費日期不能超過8位")][RegularExpression("\\d{6,8}", ErrorMessage = "繳費日期只能輸入6到8位數(shù)字例如201908/20190815")]public string PayDate { get; set; }/// <summary>/// 收據(jù)編號/// 多個使用逗號分隔,僅線下收據(jù)/// </summary>[ImporterHeader(Name = "收據(jù)編號")][MaxLength(200, ErrorMessage = "收據(jù)編號不能超過200位")]public string ReceiptCodes { get; set; }/// <summary>/// 備注/// </summary>[ImporterHeader(Name = "備注")][MaxLength(500, ErrorMessage = "備注不能超過500位")]public string Remarks { get; set; }/// <summary>/// 創(chuàng)建時間/// </summary>[ImporterHeader(IsIgnore = true)]public DateTime? CreationTime { get; set; }/// <summary>/// 收費項目id/// </summary>[ImporterHeader(IsIgnore = true)]public int? ChargeProjectId { get; set; }/// <summary>/// 班級Id/// </summary>[ImporterHeader(IsIgnore = true)]public Guid? ClassId { get; set; }/// <summary>/// 班級名稱/// </summary>[ImporterHeader(IsIgnore = true)]public string ClassName { get; set; }/// <summary>/// 年級Id/// </summary>[ImporterHeader(IsIgnore = true)]public Guid? GradeId { get; set; }/// <summary>/// 年級信息/// </summary>[ImporterHeader(IsIgnore = true)]public string GradeName { get; set; }/// <summary>/// 專業(yè)Id/// </summary>[ImporterHeader(IsIgnore = true)]public Guid? MajorId { get; set; }/// <summary>/// 專業(yè)信息/// </summary>[ImporterHeader(IsIgnore = true)]public string MajorName { get; set; }/// <summary>/// 校區(qū)Id/// </summary>[ImporterHeader(IsIgnore = true)]public Guid? CampusId { get; set; }/// <summary>/// 校區(qū)名稱/// </summary>[ImporterHeader(IsIgnore = true)]public string CampusName { get; set; }/// <summary>/// 學校Id/// </summary>[ImporterHeader(IsIgnore = true)]public Guid? SchoolId { get; set; }/// <summary>/// 學校信息/// </summary>[ImporterHeader(IsIgnore = true)]public string SchoolName { get; set; } } ?

    2.2 創(chuàng)建導Excel入Dto

    主要代碼如下所示:

    • 班級學生基礎(chǔ)數(shù)據(jù)及繳費流水數(shù)據(jù)Dto

    public class ImportStudentAndPaymentLogDto {[ExcelImporter(SheetName = "1班導入數(shù)據(jù)")]public ImportStudentDto Class1Students { get; set; }[ExcelImporter(SheetName = "繳費數(shù)據(jù)")]public ImportPaymentLogDto Class2Students { get; set; } }

    2.3 Excel模板

    模板目錄:src\Magicodes.ExporterAndImporter.Tests\TestFiles\Import\學生基礎(chǔ)數(shù)據(jù)及繳費流水號導入.xlsx

    學生基礎(chǔ)數(shù)據(jù)Sheet:

    繳費流水號Sheet:

    2.4 導入代碼

    IExcelImporter Importer = new ExcelImporter();var filePath = Path.Combine(Directory.GetCurrentDirectory(), "TestFiles", "Import", "學生基礎(chǔ)數(shù)據(jù)及繳費流水號導入.xlsx");//獲取到的導入結(jié)果為一個字典類型,Key為Sheet名,Value為Sheet對應(yīng)的數(shù)據(jù) var importDic = await Importer.ImportMultipleSheet<ImportStudentAndPaymentLogDto>(filePath);//遍歷字典,獲取每個Sheet的數(shù)據(jù) foreach (var item in importDic) {var import = item.Value;//導入的Sheet數(shù)據(jù),if (item.Key == "1班導入數(shù)據(jù)"){//多個不同類型的Sheet返回的值為object,需要進行類型轉(zhuǎn)換ImportStudentDto dto = (ImportStudentDto) import.Data.ElementAt(0);}if (item.Key == "繳費數(shù)據(jù)"){ImportPaymentLogDto dto = (ImportPaymentLogDto)import.Data.ElementAt(0);} }

    Reference

    https://github.com/dotnetcore/Magicodes.IE

    轉(zhuǎn)載是一種動力 分享是一種美德

    如果喜歡作者的文章,請關(guān)注【麥扣聊技術(shù)】訂閱號以便第一時間獲得最新內(nèi)容。本文版權(quán)歸作者和湖南心萊信息科技有限公司共有,歡迎轉(zhuǎn)載,但未經(jīng)作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權(quán)利。

    原文作者:tanyongzheng

    文檔官網(wǎng):docs.xin-lai.com

    QQ群:

    編程交流群<85318032>?

    產(chǎn)品交流群<897857351>

    總結(jié)

    以上是生活随笔為你收集整理的开源导入导出库Magicodes.IE 多sheet导入教程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。