NPOI 2.1.3.1产生损坏的XLSX文件

我试图使用NPOI 2.1.3.1从一些数据库数据创build一个Excel文件。 正在创build的文件已损坏。 Excel拒绝打开它,并将其更改为ZIP并尝试解压缩也会在Windows和WinRAR中导致错误。 我读过的其他线程说升级到2.1.3.1,因为它修复了一些有关XLSX创build,但是这不是真的。 我也读过它与它如何压缩文件有关,但似乎没有任何控制的能力。 我希望有人可以用我的代码指向正确的方向:

public byte[] GetExcelFile( QueryModel query) { var orders = Mapper.Map<IList<ExcelListModel>>(Context.Orders.Where( o => o.DateOrdered >= query.Start && o.DateOrdered <= query.End)); var workbook = new XSSFWorkbook(); var sheet = workbook.CreateSheet(); for (int i0 = 0, l0 = orders.Count, r = 0; i0 < l0; i0++) { var order = orders[i0]; for (int i1 = 0, l1 = order.Products.Count; i1 < l1; i1++, r++) { var row = sheet.CreateRow(r); var product = order.Products[i1]; row.CreateCell(0).SetCellValue(""); // ... row.CreateCell(18).SetCellValue(""); } for (int i1 = 0, l1 = order.Bonuses.Count; i1 < l1; i1++, r++) { var row = sheet.CreateRow(r); var bonus = order.Bonuses[i1]; row.CreateCell(0).SetCellValue(""); // ... row.CreateCell(18).SetCellValue(""); } } var memoryStream = new MemoryStream(); workbook.Write(memoryStream); return memoryStream.ToArray(); } 

几个小时后,我认为NPOI并没有真正的问题。 我已经切换到EPPlus,它正在输出一个正确的临时文件,但是被发送回浏览器的文件仍然被破坏。 最后,我断定这是ASP.NET MVC的FileResult实现的一个问题,因为当我覆盖Response对象时,正确的文件被返回给浏览器。 欲了解更多信息,请看这个post:

ASP.NET MVC FileResult正在破坏文件

不幸的是,当我切换到EPPlus时,我已经撕掉了NPOI代码,所以我不能100%准确地确认它没有被真正窃听。 也就是说,根据我和EPPlus一起的行为,我不认为NPOI有问题。