根据下面的实体框架类生成一个EXCEL导入模板，并使用EPPlus实现导入代码
using BootstrapBlazor.Components;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;

namespace DBLib
{
    public enum DangerLevelEnum
    {
        低,
        中,
        高,
        危
    }

    /// <summary>
    /// 隐患整改表
    /// </summary>
    [Table("RectificationOfHiddenDangers")]
    public class RectificationOfHiddenDangers: Core.INamedEntity
    {
        [Key]
        [AutoGenerateColumn(Ignore = true)]
        [Column("RectificationOfHiddenDangersId")]
        public Guid Id { get; set; }

        /// <summary>
        ///隐患标题
        /// </summary>
        [Display(Name = "隐患标题")]
        [CNRequired]
        [AutoGenerateColumn(Order = 10)]
        [StringLength(50)]
        [Column("HazardTitle")]
        public string Name { get; set; } = null!;

        [Display(Name = "所属项目")]
        [CNRequired]
        [AutoGenerateColumn(Order = 15, LookupServiceKey = "table#Project")]
        public Guid ProjectId { get; set; }

        [Display(Name = "所属项目")]
        [AutoGenerateColumn(Ignore = true)]
        public Project? Project { get; set; }

        /// <summary>
        /// 被检查单位ID
        /// </summary>
        [Display(Name = "被检查单位")]
        public Guid? UnitId { get; set; }

        /// <summary>
        /// 被检查单位
        /// </summary>
        [Display(Name = "被检查单位")]
        [StringLength(250)]
        public string? UnitName { get; set; }

        /// <summary>
        /// 统一社会信用代码
        /// </summary>
        [Display(Name = "统一社会信用代码")]
        [StringLength(50)]
        public string? UnitNum { get; set; }

        /// <summary>
        /// 负责人
        /// </summary>
        [Display(Name = "负责人")]
        [StringLength(50)]
        public string? UnitPricipal { get; set; }

        /// <summary>
        /// 联系电话
        /// </summary>
        [Display(Name = "联系电话")]
        [StringLength(50)]
        public string? UnitTel { get; set; }

        /// <summary>
        ///检查时间
        /// </summary>
        [Display(Name = "检查时间")]
        [CNRequired]
        [AutoGenerateColumn(FormatString = "yyyyMMdd", Order = 30)]
        public DateTime DiscoveryTime { get; set; }

        /// <summary>
        ///检查人
        /// </summary>
        [Display(Name = "检查人")]
        [AutoGenerateColumn(Order = 18)]
        [StringLength(50)]
        public string? CheckPerson { get; set; }

        /// <summary>
        ///检查单位
        /// </summary>
        [Display(Name = "检查单位")]
        [AutoGenerateColumn(Order = 18)]
        [StringLength(250)]
        public string? CheckUnit { get; set; }

        /// <summary>
        ///检查地点
        /// </summary>
        [Display(Name = "检查地点")]
        [AutoGenerateColumn(Order = 18)]
        [StringLength(250)]
        public string? CheckAddress { get; set; }

        /// <summary>
        ///检查情况
        /// </summary>
        [Display(Name = "检查情况")]
        [AutoGenerateColumn(Order = 18)]
        [StringLength(250)]
        public string? CheckQK { get; set; }

        /// <summary>
        ///隐患等级
        /// </summary>
        [Display(Name = "隐患等级")]
        [AutoGenerateColumn(Order = 18)]
        public DangerLevelEnum DangerLevelEnum { get; set; }

        /// <summary>
        ///发现问题
        /// </summary>
        [Display(Name = "发现问题")]
        [CNRequired]
        [AutoGenerateColumn(Order = 20, ComponentType = typeof(Textarea), Cols =12)]
        [StringLength(500)]
        public string HiddenDangerDescription { get; set; } = null!;

        /// <summary>
        ///整改措施
        /// </summary>
        [Display(Name = "整改措施")]
        [AutoGenerateColumn(Order = 20, ComponentType = typeof(Textarea), Cols = 12)]
        [StringLength(500)]
        public string? WorkPlan { get; set; }

        /// <summary>
        ///整改意见
        /// </summary>
        [Display(Name = "整改意见")]
        [AutoGenerateColumn(Order = 20, ComponentType = typeof(Textarea), Cols = 12)]
        [StringLength(500)]
        public string? FinishWork { get; set; }

        /// <summary>
        ///被检查单位意见
        /// </summary>
        [Display(Name = "被检查单位意见")]
        [AutoGenerateColumn(Order = 20, ComponentType = typeof(Textarea), Cols = 12)]
        [StringLength(250)]
        public string? BJCUnitOpinion { get; set; }

        /// <summary>
        ///责任部门
        /// </summary>
        [Display(Name = "责任部门")]
        [AutoGenerateColumn(Order = 40)]
        [StringLength(50)]
        public string? ResponsibleDeptForRectification { get; set; }

        /// <summary>
        ///整改责任人
        /// </summary>
        [Display(Name = "整改责任人")]
        [AutoGenerateColumn(Order = 40)]
        [StringLength(50)]
        public string? ResponsiblePersonForRectification { get; set; }

        /// <summary>
        ///责任部门验收人
        /// </summary>
        [Display(Name = "责任部门验收人")]
        [AutoGenerateColumn(Order = 120)]
        [StringLength(50)]
        public string? ZRBMAcceptancePerson { get; set; }

        /// <summary>
        ///安环部验收人
        /// </summary>
        [Display(Name = "安环部验收人")]
        [AutoGenerateColumn(Order = 120)]
        [StringLength(50)]
        public string? AHBAcceptancePerson { get; set; }

        /// <summary>
        ///计划完成整改时间
        /// </summary>
        [Display(Name = "计划完成整改时间")]
        [AutoGenerateColumn(FormatString = "yyyyMMdd",Order = 60)]
        public DateTime? RectificationPeriod { get; set; }

        /// <summary>
        ///整改情况
        /// </summary>
        [Display(Name = "整改情况")]
        [AutoGenerateColumn(Order = 70, ComponentType = typeof(Textarea), Cols =12)]
        [StringLength(500)]
        public string? RectificationMeasures { get; set; }

        /// <summary>
        ///延期完成整改时间
        /// </summary>
        [Display(Name = "延期完成整改时间")]
        [AutoGenerateColumn(Order = 80)]
        public DateTime? DelayFinishDate { get; set; } = null!;

        /// <summary>
        ///整改情况
        /// </summary>
        [Display(Name = "延期原因")]
        [AutoGenerateColumn(Order = 90, ComponentType = typeof(Textarea), Cols = 12)]
        [StringLength(250)]
        public string? DelayReason { get; set; }

        /// <summary>
        ///整改照片
        /// </summary>
        [Display(Name = "整改照片")]
        [AutoGenerateColumn(Order = 100, ComponentType = typeof(Textarea), Cols =12)]
        [StringLength(250)]
        public string? RectificationPhotos { get; set; }

        /// <summary>
        ///验收时间
        /// </summary>
        [Display(Name = "验收时间")]
        [AutoGenerateColumn(FormatString = "yyyyMMdd",Order = 90)]
        public DateTime? AcceptanceTime { get; set; }

        /// <summary>
        ///验收结果
        /// </summary>
        [Display(Name = "验收结果")]
        [AutoGenerateColumn(Order = 110)]
        [NotMapped]
        public bool AcceptanceResult2 { get; set; }

        /// <summary>
        ///验收结果
        /// </summary>
        [Display(Name = "验收结果")]
        [AutoGenerateColumn(Order = 110)]
        public bool? AcceptanceResult { get; set; }

        /// <summary>
        ///验收人
        /// </summary>
        [Display(Name = "验收人")]
        [AutoGenerateColumn(Order = 120)]
        [StringLength(50)]
        public string? AcceptancePerson { get; set; }

        /// <summary>
        ///验收意见
        /// </summary>
        [Display(Name = "验收意见")]
        [AutoGenerateColumn(Order = 130)]
        [StringLength(500)]
        public string? AcceptanceOpinion { get; set; }

        /// <summary>
        ///复查时间
        /// </summary>
        [Display(Name = "复查时间")]
        [AutoGenerateColumn(FormatString = "yyyyMMdd", Order = 90)]
        public DateTime? FcTime { get; set; }

        /// <summary>
        ///复查意见
        /// </summary>
        [Display(Name = "复查意见")]
        [AutoGenerateColumn(Order = 110)]
        [StringLength(250)]
        public string? FcResult { get; set; }

        /// <summary>
        ///复查人员
        /// </summary>
        [Display(Name = "复查人员")]
        [AutoGenerateColumn(Order = 120)]
        [StringLength(50)]
        public string? FcPerson { get; set; }
    }
}