Asp.net核心导入Excel文件FileNotFoundException

时间:2017-03-03 15:43:00

标签: c# asp.net-core epplus

我有这个工作,但它已经停止,我无法弄清楚原因。我使用EPPlus.Core v1.3导入一个简单的excel文件。以下是我使用的代码:

public async Task<IActionResult> Import(IFormFile file)
    {
        //Get file
        var newfile = new FileInfo(file.FileName);
        var fileExtension = newfile.Extension;

        //Check if file is an Excel File
        if (fileExtension.Contains(".xls"))
        {
            //Create an excel package
            using (var package = new ExcelPackage(newfile))
            {
                //Get the first worksheet in the file
                var worksheet = package.Workbook.Worksheets[1];
...

var工作表行会抛出错误

  

&#34; IndexOutOfRangeException:工作表位置超出范围。&#34;

但是,当我查看包变量时,我看到了这个错误

  

&#34;长度=&#39; package.File.Length&#39;抛出了类型的例外   &#39; System.IO.FileNotFoundException&#39;&#34;

我在这里缺少什么?就像我说的那样,这曾经起作用了,我无法想到我改变的与此代码有关的任何事情都会导致这个问题。

2 个答案:

答案 0 :(得分:0)

它也是同一个文件吗?看起来文件可能没有两个工作表,因为索引是1,它正在寻找第二个工作表。

答案 1 :(得分:0)

您需要在MemoryStream中加载该文件,然后从那里创建ExcelPackage

using (MemoryStream ms = new MemoryStream(FileUpload1.FileBytes))
using (ExcelPackage excelPackage = new ExcelPackage(ms))
{
    //work with the excel document
}

FileUpload1.FileBytes如果是asp.net webforms,但我猜Core有类似的东西。