Epplus:使用LoadFromCollection时,导出的Excel文件中的布尔列为空

在我的MVC应用程序中,我有一个加载IEnumerable并将其导出到Excel文件的ActionResult。 除非我有一个布尔列,那部分工作很好。 在这种情况下,布尔列的值是空的。

LoadFromCollection不支持布尔列吗?

为了解决这个问题,我可以在模型中创build一个单独的字段,将布尔值转换为string值。 然而,我希望我可以在不需要调整模型的ExcelPackage()块中添加一个语句来完成这项工作。 这是可能的,还是重写模型的唯一可能的解决scheme?

 public ActionResult ExportToExcel(string _searchString, string _setScale) { // This is the query result set the user wishes to export to file IEnumerable<CreditsAllsExport> exportQuery; /* ... irrelevant code redacted ... */ exportQuery = exportQuery.AsEnumerable(); byte[] response; using (var excelFile = new ExcelPackage()) { /* ... irrelevant code redacted ... */ worksheet.Cells["A5"].LoadFromCollection(Collection: exportQuery, PrintHeaders: true); /* TRANSLATE BOOLEAN TO Yes or No */ response = excelFile.GetAsByteArray(); } /* ... irrelevant code redacted ... */ } 

这工作完全正确…

  var rnd = new Random(); var pkg = new ExcelPackage(); var ws = pkg.Workbook.Worksheets.Add("Test"); var blist = new List<bool>(); for(int i=0; i < 20;i++) { blist.Add(rnd.NextDouble() > .5 ? true : false); } ws.Cells["A5"].LoadFromCollection(blist, true); pkg.SaveAs(new FileInfo(@"c:\tmp\bool.xlsx")); 

这是令人尴尬的,但事实certificate,我的专栏没有出现在结果中,因为我没有把它列入我的select陈述。

正如@Izydrmr所显示的那样,LoadFromCollection支持布尔值。 所以回家的要点是,如果一个布尔列不出现,然后检查select语句。

 IEnumerable<CreditsAllsExport> exportQuery = from s in db.CreditsAlls select new CreditsAllsExport { FiscalYear = s.FiscalYear, Campus = s.Campus, StudentName = s.StudentName, CourseID = s.CourseID, CourseTitle = s.CourseTitle, CreditEarned = s.CreditEarned, DateEarned = s.DateEarned, Department = s.Department, School = s.School, Teacher = s.Teacher, /* I had forgotten this column*/ Transfer=s.Transfer, CampusSchoolMatch = s.CampusSchoolMatch };