.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 ,设置在属性上【导入、导出】