コード例 #1
0
        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);
            }
        }