public void Export <T>(IEnumerable <T> objs, string filePath) { using (var fs = new FileStream(filePath, FileMode.Create, FileAccess.ReadWrite)) { IWorkbook workbook = null; var lPath = filePath.ToLower(); if ((lPath.IndexOf(".xlsx") > 0) || (lPath.IndexOf(".csv") > 0)) // 2007版本 { workbook = new XSSFWorkbook(); } else if (lPath.IndexOf(".xls") > 0) // 2003版本 { workbook = new HSSFWorkbook(); } var type = typeof(T); var cAttrs = type.GetCustomAttributes <SheetNameAttribute>(); if (cAttrs.Count() > 0) { foreach (var cAttr in cAttrs) { var fliter = LambdaParser.Compile <Func <T, bool> >(cAttr.Lambda); var datas = objs.Where(fliter); CreateExcel(datas, workbook, cAttr.SheetName); } } else { CreateExcel(objs, workbook); } workbook.Write(fs); } }