.NET 開源導入導出庫 Magicodes.IE 2.5發布

今天我們發布了2.5版本,這當然也離不開大家對Magicodes.IE的支援,今天我也是跟往常一樣列舉了該版本一些重要的更新內容。

當然也要說一下,在這個版本中我們設計了全新的LOGO

file

Excel導出

  • Excel導出支援HeaderRowIndex #164

ExcelExporterAttribute導出特性類中添加HeaderRowIndex屬性,方便導出時去指定從第一行開始導出。

  • 增加Excel枚舉導出對DescriptionAttribute的支援 #168

在導出枚舉類型時起初我們可以通過ValueMapping和導出枚舉本身的字元串名稱,在現在我們可以通過
DescriptionAttribute
DisplayAttribute,
DisplayNameAttribute
實現Text值導出

enum Sex
{
        /// <summary>
        /// 男
        /// </summary>
        [Description("男")]
        boy = 1,
        /// <summary>
        /// 女
        /// </summary>
        [Description("女")]
        girl = 2
}
  • TableStyle修改為枚舉類型

在這之前我們將TableStyle屬性放在了ExporterAttribute基礎特性中,起初我們的TableStyle屬性為字元串,
但是帶給了我們不必要的麻煩,很難讓使用者去查找這些樣式名稱,所以此處我們將其換成了枚舉類型,方便使用者從列表中
進行查找相關樣式

  [ExcelExporter(Name = "測試", TableStyle = TableStyles.Light10)]

Excel導入

  • Excel生成導入模板支援內置數據驗證#167

對於內置數據驗證的支援可通過IsInterValidation屬性開啟,並且需要注意的是僅
支援MaxLengthAttribute
MinLengthAttribute
StringLengthAttribute
RangeAttribute

支援對內置數據驗證的開啟操作。
file

file

支援對輸入提示的展示操作。

file

示例程式碼如下所示:

    public class GenerateStudentImportSheetDataValidationDto
    {
        /// <summary>
        ///     序號
        /// </summary>
        [ImporterHeader(Name = "序號", IsInterValidation = true)]
        [Range(minimum: 0, maximum: 20, ErrorMessage = "序號最大為20")]
        public long SerialNumber { get; set; }

        /// <summary>
        ///     學籍號
        /// </summary>
        [ImporterHeader(Name = "學籍號", IsAllowRepeat = false, IsInterValidation = true)]
        [MaxLength(30, ErrorMessage = "學籍號字數超出最大限制,請修改!")]
        public string StudentCode { get; set; }

        /// <summary>
        ///     姓名
        /// </summary>
        [ImporterHeader(Name = "姓名")]
        [Required(ErrorMessage = "學生姓名不能為空")]
        [MaxLength(50, ErrorMessage = "名稱字數超出最大限制,請修改!")]
        public string Name { get; set; }

        /// <summary>
        ///     年齡
        /// </summary>
        [ImporterHeader(Name = "年齡", IsInterValidation = true)]
        [Range(minimum: 18, maximum: 20, ErrorMessage = "年齡範圍需要在18-20歲哦")]
        public int Age { get; set; }

        /// <summary>
        ///     MinTest
        /// </summary>
        [ImporterHeader(Name = "MinTest", IsInterValidation = true)]
        [MinLength(5, ErrorMessage = "最小長度為5哦")]
        public string MinTest { get; set; }

        /// <summary>
        ///     忽略類型
        /// </summary>
        [ImporterHeader(Name = "忽略類型", IsInterValidation = true)]
        [Range(minimum: 18, maximum: 20, ErrorMessage = "年齡範圍需要在18-20歲哦", ErrorMessageResourceType = typeof(string))]
        public int IgnoreType { get; set; }

        [ImporterHeader(Name = "出生日期", IsInterValidation = true, ShowInputMessage = "輸入日期")]
        [Range(typeof(DateTime), minimum: "2020-10-20", maximum: "2020-10-24", ErrorMessage = "日期範圍超出了哦")]
        public DateTime Birthday { get; set; }
}

注意:數據範圍驗證僅支援DateTime和int類型

  • 導入對ColumnIndex的支援#198

導入功能支援ColumnIndex可以通過去指定某一列數據列,這樣在複雜的列名時結構時,我們也可以直接
輕鬆的應對

file

[ImporterHeader(Name = "年齡", ColumnIndex = 3)]
public int? Age { get; set; }

歡迎掃碼加入微信群

//github.com/dotnetcore/Magicodes.IE

Tags: