開源導入導出通用庫Magicodes.ExporterAndImporter發佈

  目錄

  特點

  相關官方Nuget包

  導出 Demo

  普通導出

  特性導出

  列頭處理或者多語言支持

  導入Demo

  普通模板

  多數據類型

  數據驗證

  Docker中使用

  Dockerfile Demo

  特點

  封裝導入導出業務,目前僅支持 Excel,有興趣的小夥伴可以考慮支持 CSV 以及PDF或其他格式的導出

  配置特性即可控制相關邏輯和顯示結果,無需修改邏輯代碼

  推薦配合 導入導出DTO 使用

  導出支持列頭自定義處理以便支持多語言等場景

  導出支持文本自定義過濾或處理

  導入支持自動根據導入DTO生成導入模板及模板驗證

  導入支持數據驗證邏輯

  導入支持數據下拉選擇

  導入支持註釋添加

  相關官方Nuget包

  


  導出 Demo

  Demo1-1

  普通導出

  


  

複製代碼


  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

  特性導出

  


  

複製代碼


  [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

  列頭處理或者多語言支持

  


  

複製代碼


  [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 普通模板

  生成模板

  


  

複製代碼


  public class ImportProductDto

  {

  ///


  /// 產品名稱

  ///


  [ImporterHeader(Name = "產品名稱")]

  public string Name { get; set; }

  ///


  /// 產品代碼

  ///


  [ImporterHeader(Name = "產品代碼")]

  public string Code { get; set; }

  ///


  /// 產品條碼

  ///


  [ImporterHeader(Name = "產品條碼")]

  public string BarCode { get; set; }

  }

  

複製代碼


  


  導入模板

  


  


  Demo2-2 多數據類型

  生成模板

  


  

複製代碼


  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

  }

  

複製代碼


  導入模板

  


  


  Demo2-3 數據驗證

  生成模板

  必填項表頭文本爲紅色


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章