我想从服务器读取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上停止,它会出现以下错误:
不能在不支持搜索的流上操作。
我做错了什么,为什么我不能打开文件?
答案 0 :(得分:3)
您收到此错误,因为SpreadsheetDocument的Open方法需要seekable stream个对象。您的流变量是NetworkStream的实例,不支持搜索。您必须将网络流复制到本地流(例如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);