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

时间:2018-10-09 16:32:05

标签: npoi

使用NPOI版本2.1.3.1,此行可以正常工作,返回一个包含数据的字节数组: 工作簿是XSSFWorkbook

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

当升级到2.2(和2.3)时,它不再返回任何数据,字节数组有0个字节。 没有引发异常,只是无声地无法写入数据。

是否有新方法可以将此工作簿写成更新版本?

1 个答案:

答案 0 :(得分:0)

我在您的代码中看不到任何问题。实际上,我正在使用类似的方法来获得结果。尝试使用MemoryStream类对返回的值进行类型转换,或将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();

如果上述方法无效,请参见此链接NPOI writes 0 bytes in the MemoryStream