.net core 中 excel 導入、導出
支持 .net core 2.0 以上
當前已集成 NPOI,EpPlus
導入:單/多個sheet導入、 DataAnnotations 數據驗證、默認值、字段忽略、公式計算、合並單元格取值、指定行區間導入等。
導出:支持 樣式、字體、列寬、行高、列合並、行合並、列統計、數據格式化 、指定表頭導出 等設置。
1.添加引用:
2.添加服務:
在 Startup.cs 中 添加服務(選其一即可,多個則取最后一個)
3.導入
excel 中的表頭行的名稱必須與Display特性的name或屬性名稱對應,導入類中的所有 “未被忽略(不帶IgnoreColumn特性)”的屬性在表頭中必須存在
說明
- 表頭:表頭名稱對應 System.ComponentModel.DataAnnotations 下的 Display 特性的 Name ,若不存在 Display 特性 ,則使用 TImportDto 屬性名稱作為表頭
- 驗證:字段驗證可使用 System.ComponentModel.DataAnnotations 的所有特性,如 Required,StringLength,Range,RegularExpression,EnumDataType等
- 默認值:若某字段為空但是需要設置默認值時,可使用 DefaultValue 特性,如 [DefaultValue(typeof(DateTime), "2020-9-9")]
- 忽略字段:可使用 IgnoreColumn 特性來忽略導入的 TImportDto 的屬性字段,添加該特性的屬性字段不會被單元格賦值和驗證
- 配置:_excelImportManager.Import 的第二個參數 ExcelImportOptions 可進行配置
4.導出
說明
-
表頭:表頭名稱對應 System.ComponentModel.DataAnnotations 下的 Display 特性的 Name ,若不存在 Display 特性 ,則使用 TImportDto 屬性名稱作為表頭
-
默認值:若某字段為空但是需要設置默認值時,可使用 DefaultValue 特性,如 [DefaultValue(typeof(DateTime), "2020-9-9")]
-
忽略字段:可使用 IgnoreColumn 特性來忽略導出的 TExportDto 的屬性字段,添加該特性的屬性字段不會被導出
-
配置:_excelExportManager.Export 的第二個參數 ExcelExportOptions 可進行配置
-
指定表頭和順序:可使用第三個參數指定篩選只需要導出的字段,不指定則按 TExportDto 字段順序導出全部,指定則按數組順序導出【導出的表頭字段可通過_excelExportManager.GetExportHeader<ExportTest>()方法獲取】
4.特性
-
表頭樣式:HeaderStyle (有列寬),設置在類或屬性上【導出】
-
表頭字體:HeaderFont,設置在類或屬性上【導出】
-
數據樣式:DataStyle ,設置在類或屬性上【導出】
-
數據字體:DataFont ,設置在類或屬性上【導出】
-
行高:RowHeight ,設置在類上【導出】
-
行合並:MergeRow ,設置在屬性上;【導出】
-
列合並:MergeColumn(nameof(屬性1),nameof(屬性2),……) ,設置在類上,可多個【導出】
-
列統計:ColumnStats((short)FunctionEnum.Min) ,設置在屬性上,可多個【導出】
-
忽略列:IgnoreColumn ,設置在屬性上【導入、導出】