用GetResponseStream和SpreadsheetDocument.Open读取xlsstream

我想从服务器读取xls。 我成功地用WebClient下载了这个文件,但现在我想打开它而不保存文件。

var request = WebRequest.Create(location); var response = request.GetResponse(); var stream = response.GetResponseStream(); var document = SpreadsheetDocument.Open(stream, false); if (stream != null) stream.Close(); 

我的代码停止在SpreadsheetDocument.Open,它会提供以下错误:

无法在不支持查找的stream上操作。

我做错了什么,为什么我不能打开文件?

您收到此错误,因为SpreadsheetDocument的Open方法需要一个可查找的stream对象。 您的streamvariables是NetworkStream的一个实例,不支持查找。 您必须将networkingstream复制到本地stream(例如MemoryStream )才能在代码中使用它

 var request = WebRequest.Create(location); var response = request.GetResponse(); var memoryStream = new MemoryStream(); using (var networkStream = response.GetResponseStream()) { if (networkStream != null) { // Copy the network stream to an in-memory variable networkStream.CopyTo(memoryStream); // Move the position of the stream to the beginning memoryStream .Seek(0, SeekOrigin.Begin); } } var document = SpreadsheetDocument.Open(memoryStream , false);