0

我在生产系统中有一个错误,当用户在软件中选择要上传的 excel (.xlsx) 文件时,应用程序会引发异常:Attempted to read past the end of the stream. - at ICSharpCode.SharpZipLib.Zip.ZipHelperStream.ReadLEShort()

我正在使用ExcelDataReaderSharpZipLib 更新到 0.65。有人有想法吗?

ExcelDataReader Extract Method that using SharpZipLib: Exception was throwed in 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;
    }
4

1 回答 1

0

如果 zip 文件不遵循 ZIP 标准,则会发生这种情况。该 xlsx 文件中有一些东西会导致解压缩器失效。

您可以尝试使用另一个 zip 库(或检查现有库的更新0.86 是当前版本)并使用它将文件解压缩到流中,不幸的是我没有其他库的建议作为时间尝试我必须解决同样的问题,我只能修复 zip 标头而不是找到新的 zip 库。

于 2012-09-17T19:24:18.567 回答