首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用ExcelDataReader时数据异常无效

使用ExcelDataReader时数据异常无效
EN

Stack Overflow用户
提问于 2018-01-25 13:09:23
回答 1查看 2.2K关注 0票数 1

我有一个使用ExcelDataReader.dll读取Excel文件的程序。

在我将读取文件转移到一个新任务之前,一切都很完美:

代码语言:javascript
复制
Stream output = new MemoryStream();
httpRequest.Files[0].InputStream.CopyToAsync(output);
ImportDataWriter importDatawRiter = new ImportDataWriter(authenticationInfo);
Task.Run(() => importDatawRiter.ImportFile(output));  

ImportLine代码:

代码语言:javascript
复制
public ImportResult ImportFile(Stream fs)
{
        IExcelDataReader reader = ExcelReaderFactory.CreateOpenXmlReader(fs);
}

现在这一行:

代码语言:javascript
复制
IExcelDataReader reader = ExcelReaderFactory.CreateOpenXmlReader(fs);

导致例外情况:

类型'System.IO.InvalidDataException‘的异常发生在System.IO.Compression.dll中,但未在用户代码中处理

消息:

无法找到中央目录记录的端。

异常发生在我第二次调用该函数时。

有什么问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-25 13:30:10

问题是,您没有等待复制任务完成,所以当您读取MemoryStream时,它不是满的(甚至可能是完全空的),因此,将代码更改为:

代码语言:javascript
复制
Stream output = new MemoryStream();
await httpRequest.Files[0].InputStream.CopyToAsync(output);
^^^^^
ImportDataWriter importDatawRiter = new ImportDataWriter(authenticationInfo);
Task.Run(() => importDatawRiter.ImportFile(output));  

而且,除非ImportFile是一种自暴自弃的行为,否则我建议你使用

代码语言:javascript
复制
await Task.Run(() => importDatawRiter.ImportFile(output)); 
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48443648

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档