/// <summary>
        /// 找指定表名下可用的键值对
        /// </summary>
        /// <param name="notfield">排除指定的字段或者列</param>
        /// <param name="outField">返回的字段信息</param>
        /// <param name="tableName">表名</param>
        /// <returns></returns>
        private static Dictionary <string, string> GetDictPrintHeader(string[] notfield, string tableName, out string[] outField)
        {
            string[] field = GlobalLngResource.GetColumnsFrmRes(notfield, tableName);
            outField = field;
            Dictionary <string, string> dictPrintHead = new Dictionary <string, string>();

            foreach (string item in field)
            {
                if (GlobalLngResource.GetRes(item, tableName) != null)
                {
                    dictPrintHead.Add(item, GlobalLngResource.GetRes(item, tableName));
                }
            }
            return(dictPrintHead);
        }
        public static MemoryStream ListToExcel<T1>(IList<T> list, string tableName, string[] notfield)
        {
            //获取指定表的所有字段
            string[] propertyName = GlobalLngResource.GetColumnsFrmRes(notfield, tableName);

            //创建流对象
            using (MemoryStream ms = new MemoryStream())
            {
                //将参数写入到一个临时集合中
                List<string> propertyNameList = new List<string>();
                List<string> propertyValueList = new List<string>();
                if (propertyName != null)
                    propertyNameList.AddRange(propertyName);
                //根据参数遍历资源文件值
                foreach (string item in propertyName)
                {
                    if (!string.IsNullOrEmpty(GlobalLngResource.GetRes(item, tableName)))
                    {
                        propertyValueList.Add(GlobalLngResource.GetRes(item, tableName));
                    }
                    //if (rm.GetString(item) != null)
                    //    propertyValueList.Add(rm.GetString(item));
                }
                //创NOPI的相关对象
                IWorkbook workbook = new HSSFWorkbook();
                ISheet sheet = workbook.CreateSheet();
                IRow headerRow = sheet.CreateRow(0);
                if (list.Count > 0)
                {
                    //通过反射得到对象的属性集合
                    //  PropertyInfo[] propertys = list[0].GetType().GetProperties();
                    //遍历资源文件值集合生成excel的表头标题
                    for (int i = 0; i < propertyValueList.Count; i++)
                    {
                        headerRow.CreateCell(i).SetCellValue(propertyValueList[i].ToString());
                    }
                    int rowIndex = 1;
                    //遍历集合生成excel的行集数据
                    for (int i = 0; i < list.Count; i++)
                    {
                        IRow dataRow = sheet.CreateRow(rowIndex);
                        for (int j = 0; j < propertyNameList.Count; j++)
                        {
                            //通过反射得到参数对象的属性
                            PropertyInfo property = list[i].GetType().GetProperty(propertyNameList[j].ToString());
                            if (propertyNameList.Contains(property.Name))
                            {
                                object obj = property.GetValue(list[i], null);
                                if (obj != null)
                                    dataRow.CreateCell(j).SetCellValue(obj.ToString());
                            }
                        }
                        rowIndex++;
                    }
                }
                workbook.Write(ms);
                ms.Flush();
                ms.Position = 0;
                return ms;
            }
        }