我在Azure存储中有一个zip文件,里面有一个Excel文件。我想读取excel文件,而不用使用C#下载文件。 我正在使用MemoryStream。代码是:在Azure存储中的Zip中读取Excel文件。 C#
public void ReadZipStream(CloudBlockBlob blockBlob)
{
using (var msZippedBlob = new MemoryStream())
{
blockBlob.DownloadToStream(msZippedBlob);
using (ZipArchive zip = new ZipArchive(msZippedBlob))
{
foreach (ZipArchiveEntry entry in zip.Entries)
{
if (entry.FullName.EndsWith(".xlsx", StringComparison.OrdinalIgnoreCase))
{
using (StreamReader sr = new StreamReader(entry.Open()))
{
// sr
}
}
}
}
}
}
ZipArchive的工作正常,它显示了zip文件中的所有数据。 问题在于SteamReader。它显示了一个非可读的文本所以像:
我读到,StreamReader的是一个文本阅读器,因此它不能读取Excel中。 但它有什么替代呢?
或者以另一种方式,我如何读取位于Azure中的zip文件中的Excel文件? 谢谢。
xlsx文件本质上是一个zip文件。 – stuartd
为什么期望一个'TextReader'或任何其他读者打开一个.xls文件? Excel文件是带有一些XML内容的压缩档案。要打开它,请使用像EPPlus – jAC
这样的excel框架。是不是'DownloadToStream'下载文件? – stuartd