目录

  特点

  相关官方Nuget包

  导出 Demo

  普通导出

  特性导出

  列头处理或者多语言支持

  导入Demo

  普通模板

  多数据类型

  数据验证

  Docker中使用

  Dockerfile Demo

  特点

  封装导入导出业务,目前仅支持 Excel,有兴趣的小伙伴可以考虑支持 CSV 以及PDF或其他格式的导出

  配置特性即可控制相关逻辑和显示结果,无需修改逻辑代码

  推荐配合 导入导出DTO 使用

  导出支持列头自定义处理以便支持多语言等场景

  导出支持文本自定义过滤或处理

  导入支持自动根据导入DTO生成导入模板及模板验证

  导入支持数据验证逻辑

  导入支持数据下拉选择

  导入支持注释添加

  相关官方Nuget包

  

开源导入导出通用库Magicodes.ExporterAndImporter发布_第1张图片


  导出 Demo

  Demo1-1

  普通导出

  

开源导入导出通用库Magicodes.ExporterAndImporter发布_第2张图片


  

复制代码


  public class ExportTestData

  {

  public string Name1 { get; set; }

  public string Name2 { get; set; }

  public string Name3 { get; set; }

  public string Name4 { get; set; }

  }

  var result = await Exporter.Export(filePath, new List()

  {

  new ExportTestData()

  {

  Name1 = "1",

  Name2 = "test",

  Name3 = "12",

  Name4 = "11",

  },

  new ExportTestData()

  {

  Name1 = "1",

  Name2 = "test",

  Name3 = "12",

  Name4 = "11",

  }

  });

  

复制代码


  Demo1-2

  特性导出

  

开源导入导出通用库Magicodes.ExporterAndImporter发布_第3张图片


  

复制代码


  [ExcelExporter(Name = "测试", TableStyle = "Light10")]public class ExportTestDataWithAttrs

  {

  [ExporterHeader(DisplayName = "加粗文本", IsBold = true)]

  public string Text { get; set; }

  [ExporterHeader(DisplayName = "普通文本")]

  public string Text2 { get; set; }

  [ExporterHeader(DisplayName = "忽略", IsIgnore = true)]

  public string Text3 { get; set; }

  [ExporterHeader(DisplayName = "数值", Format = "#,##0")]

  public double Number { get; set; }

  [ExporterHeader(DisplayName = "名称", IsAutoFit = true)]

  public string Name { get; set; }

  }

  var result = await Exporter.Export(filePath, new List()

  {

  new ExportTestDataWithAttrs()

  {

  Text = "啊实打实大苏打撒",

  Name="aa",

  Number =5000,

  Text2 = "w萨达萨达萨达撒",

  Text3 = "sadsad打发打发士大夫的"

  },

  new ExportTestDataWithAttrs()

  {

  Text = "啊实打实大苏打撒",

  Name="啊实打实大苏打撒",

  Number =6000,

  Text2 = "w萨达萨达萨达撒",

  Text3 = "sadsad打发打发士大夫的"

  },

  new ExportTestDataWithAttrs()

  {

  Text = "啊实打实速度大苏打撒",

  Name="萨达萨达",

  Number =6000,

  Text2 = "突然他也让他人",

  Text3 = "sadsad打发打发士大夫的"

  },

  });

  

复制代码


  Demo1-3

  列头处理或者多语言支持

  

开源导入导出通用库Magicodes.ExporterAndImporter发布_第4张图片


  

复制代码


  [ExcelExporter(Name = "测试", TableStyle = "Light10")]

  public class AttrsLocalizationTestData

  {

  [ExporterHeader(DisplayName = "加粗文本", IsBold = true)]

  public string Text { get; set; }

  [ExporterHeader(DisplayName = "普通文本")]

  public string Text2 { get; set; }

  [ExporterHeader(DisplayName = "忽略", IsIgnore = true)]

  public string Text3 { get; set; }

  [ExporterHeader(DisplayName = "数值", Format = "#,##0")]

  public double Number { get; set; }

  [ExporterHeader(DisplayName = "名称", IsAutoFit = true)]

  public string Name { get; set; }

  }

  ExcelBuilder.Create().WithLocalStringFunc((key) =>

  {

  if (key.Contains("文本"))

  {

  return "Text";

  }

  return "未知语言";

  }).Build();

  var filePath = Path.Combine(Directory.GetCurrentDirectory(), "testAttrsLocalization.xlsx");

  if (File.Exists(filePath)) File.Delete(filePath);

  var result = await Exporter.Export(filePath, new List()

  {

  new AttrsLocalizationTestData()

  {

  Text = "啊实打实大苏打撒",

  Name="aa",

  Number =5000,

  Text2 = "w萨达萨达萨达撒",

  Text3 = "sadsad打发打发士大夫的"

  },

  new AttrsLocalizationTestData()

  {

  Text = "啊实打实大苏打撒",

  Name="啊实打实大苏打撒",

  Number =6000,

  Text2 = "w萨达萨达萨达撒",

  Text3 = "sadsad打发打发士大夫的"

  },

  new AttrsLocalizationTestData()

  {

  Text = "啊实打实速度大苏打撒",

  Name="萨达萨达",

  Number =6000,

  Text2 = "突然他也让他人",

  Text3 = "sadsad打发打发士大夫的"

  },

  });

  

复制代码


  导入 Demo

  导入特性(ImporterHeader):

  Name:string 表头显示名称(不可为空)。

  Description:string 表头添加注释。

  Author:string 注释作者,默认值为X.M。

  导入结果(ImportModel):

  Data:IList导入的数据集合。

  ValidationResults:IList数据验证结果。

  HasValidTemplate:bool 模板验证是否通过。

  数据验证结果(ValidationResultModel):

  Index:int 错误数据所在行。

  Errors:IDictionary整个Excel错误集合。目前仅支持数据验证错误。

  FieldErrors:IDictionary数据验证错误。

  Demo2-1 普通模板

  生成模板

  

开源导入导出通用库Magicodes.ExporterAndImporter发布_第5张图片


  

复制代码


  public class ImportProductDto

  {

  ///


  /// 产品名称

  ///


  [ImporterHeader(Name = "产品名称")]

  public string Name { get; set; }

  ///


  /// 产品代码

  ///


  [ImporterHeader(Name = "产品代码")]

  public string Code { get; set; }

  ///


  /// 产品条码

  ///


  [ImporterHeader(Name = "产品条码")]

  public string BarCode { get; set; }

  }

  

复制代码


  


  导入模板

  

开源导入导出通用库Magicodes.ExporterAndImporter发布_第6张图片


  

开源导入导出通用库Magicodes.ExporterAndImporter发布_第7张图片


  Demo2-2 多数据类型

  生成模板

  

开源导入导出通用库Magicodes.ExporterAndImporter发布_第8张图片


  

复制代码


  public class ImportProductDto

  {

  ///


  /// 产品名称

  ///


  [ImporterHeader(Name = "产品名称")]

  public string Name { get; set; }

  ///


  /// 产品代码

  ///


  [ImporterHeader(Name = "产品代码")]

  public string Code { get; set; }

  ///


  /// 产品条码

  ///


  [ImporterHeader(Name = "产品条码")]

  public string BarCode { get; set; }

  ///


  /// 客户Id

  ///


  [ImporterHeader(Name = "客户代码")]

  public long ClientId { get; set; }

  ///


  /// 产品型号

  ///


  [ImporterHeader(Name = "产品型号")]

  public string Model { get; set; }

  ///


  /// 申报价值

  ///


  [ImporterHeader(Name = "申报价值")]

  public double DeclareValue { get; set; }

  ///


  /// 货币单位

  ///


  [ImporterHeader(Name = "货币单位")]

  public string CurrencyUnit { get; set; }

  ///


  /// 品牌名称

  ///


  [ImporterHeader(Name = "品牌名称")]

  public string BrandName { get; set; }

  ///


  /// 尺寸

  ///


  [ImporterHeader(Name = "尺寸(长x宽x高)")]

  public string Size { get; set; }

  ///


  /// 重量

  ///


  [ImporterHeader(Name = "重量(KG)")]

  public double Weight { get; set; }

  ///


  /// 类型

  ///


  [ImporterHeader(Name = "类型")]

  public ImporterProductType Type { get; set; }

  ///


  /// 是否行

  ///


  [ImporterHeader(Name = "是否行")]

  public bool IsOk { get; set; }

  }

  

复制代码


  

复制代码


  public enum ImporterProductType

  {

  [Display(Name = "第一")]

  One,

  [Display(Name = "第二")]郑州妇科医院:http://www.zztjfk.com/

  Two

  }

  

复制代码


  导入模板

  

开源导入导出通用库Magicodes.ExporterAndImporter发布_第9张图片


  

开源导入导出通用库Magicodes.ExporterAndImporter发布_第10张图片


  Demo2-3 数据验证

  生成模板

  必填项表头文本为红色