我在生产系统中有一个错误,当用户选择要在软件内部上传的excel(.xlsx)文件时,该应用程序会抛出异常:Attempted to read past the end of the stream. - at ICSharpCode.SharpZipLib.Zip.ZipHelperStream.ReadLEShort()
我正在使用ExcelDataReader
,SharpZipLib已更新为0.65。
有人有想法吗?
使用SharpZipLib的ExcelDataReader Extract方法: zipFile = new ZipFile(filestream);
引发了异常感谢。
public bool Extract(Stream fileStream)
{
if (null == fileStream) return false;
CleanFromTemp();
NewTempPath();
_isValid = true;
ZipFile zipFile = null;
try
{
zipFile = new ZipFile(fileStream);
IEnumerator enumerator = zipFile.GetEnumerator();
while (enumerator.MoveNext())
{
ZipEntry entry = (ZipEntry)enumerator.Current;
ExtractZipEntry(zipFile, entry);
}
}
catch (Exception ex)
{
_isValid = false;
_exceptionMessage = ex.Message;
Log.Trace(string.Format("{0} - {1}",ex.Message ,ex.StackTrace), this.GetType());
CleanFromTemp();
}
finally
{
fileStream.Close();
if (null != zipFile) zipFile.Close();
}
return _isValid ? CheckFolderTree() : false;
}
答案 0 :(得分:0)
如果zip文件不符合ZIP标准,则会发生这种情况。 xlsx文件中有一些东西会丢弃解压缩程序。
您可以尝试使用另一个zip库(或检查现有库0.86 is the current build的更新)并使用它将文件解压缩到流中,遗憾的是我没有其他库的建议尝试因为我必须修复同样的问题,所以我只能修复zip标题,而不是找到一个新的zip库。