/// <summary>
        /// 返回实体数据列表
        /// </summary>
        /// <typeparam name="T">实体类型</typeparam>
        /// <param name="excelPath">Excel 路径</param>
        /// <param name="sheetName">Sheet 表单名称</param>
        /// <param name="propertyMatchList">属性匹配,Dictionary&lt;string, object&gt; 或 new {}</param>
        /// <param name="headerIndex">表头起始索引,默认值:0,表示第一行是表头数据,与 dataIndex 相同时,表示 Excel 无表头</param>
        /// <param name="dataIndex">数据行起始索引,默认值:1,表示数据从第二行开始</param>
        /// <param name="reflectionType">反射类型</param>
        /// <returns></returns>
        public static List <T> ToEntityList <T>(string excelPath, string sheetName, object propertyMatchList = null, int headerIndex = 0, int dataIndex = 1, ReflectionTypeEnum reflectionType = ReflectionTypeEnum.Expression) where T : class, new()
        {
            List <T> dataList = new List <T>();

            ExecuteIWorkbookRead(excelPath, (Workbook workbook) =>
            {
                Dictionary <string, string> propertyDict = CommonHelper.MergeDict(false, CommonHelper.KeyValueTransform(propertyMatchList), CommonHelper.KeyValueTransform(ReflectionGenericHelper.GetPropertyDict <T>()));
                dataList = SheetEntityList <T>(workbook, sheetName, propertyDict, headerIndex, dataIndex, reflectionType);
            });
            return(dataList);
        }