NPOI 版本 2.2+ MemoryStream.ToArray() 0 字节

NPOI version 2.2+ MemoryStream.ToArray() 0 bytes

使用 NPOI 版本 2.1.3.1,此行完美运行,返回一个包含数据的字节数组: 工作簿是 XSSFWorkbook

using (var memoryStream = new MemoryStream())
{
    workbook.Write(memoryStream);
    return  memoryStream.ToArray();
}

当升级到 2.2(和 2.3)时,这不再是 returns 任何数据,字节数组有 0 个字节。 没有抛出异常,它只是静静地写入数据失败。

更新后的版本有新的写法吗?

我没有发现您的代码有任何问题。事实上,我正在使用类似的方法来获得结果。尝试使用 MemoryStream class 类型转换返回值或将 memorystream 变量定义为 MemoryStream.

类型

下面是我的做法

public MemoryStream GetExcelStream()        
 {    
     MemoryStream ms = null;
     using (ms = new MemoryStream())
     {
       workbook.Write(ms); 
     }
   return ms;
 }

MemoryStream excelMS = GetExcelStream();
 ..........................
Response.BinaryWrite(excelMS.ToArray());
Response.End();

如果上述方法不起作用,请参阅此 link