无法读取Excel文件 - File.open无效

时间:2014-12-15 13:22:00

标签: c# .net excel file file-upload

我用C#在.NET中构建一个小型网站。用户必须上传已经实现的Excel文件,扩展名.xls或.xlsx。虽然我实际上无法从Excel文件中读取值。我现在写了这段代码:

    public ActionResult Index(HttpPostedFileBase file)
    {            
            string fileName = Path.GetFileName(file.FileName);
            if (fileName.EndsWith(".xlsx") || (fileName.EndsWith(".xls")))
            {
                // store the file inside ~/App_Data/uploads folder
                string path = Path.Combine(Server.MapPath("~/App_Data/uploads/"), fileName);
                file.SaveAs(path);
                // Get file info
                int contentLength = file.ContentLength;
                string contentType = file.ContentType;

                // Get file data
                byte[] data = new byte[] { };
                using (var binaryReader = new BinaryReader(file.InputStream))
                {
                    data = binaryReader.ReadBytes(file.ContentLength);
                }

                using (FileStream fs = File.Open(path, FileMode.OpenOrCreate))
                {
                    UTF8Encoding temp = new UTF8Encoding(true);

                    while (fs.Read(data, 0, data.Length) > 0)
                    {
                        //Console.WriteLine(temp.GetString(b));
                    }
                }

                // redirect back to the index action to show the form once again
                return RedirectToAction("Index");
            }

现在我猜测代码不好,但我在第二次使用行时遇到错误,在' File.Open(...)'

'System.Web.Mvc.Controller.File(byte[], string)' is a 'method', which is not valid in the given context C:\Users\.....cs

我在线阅读了无数的例子,但似乎没有一个类似的问题:/如果有人能解决这个错误或帮助我解决这个问题,我们将不胜感激!它可能是小事/傻事。

1 个答案:

答案 0 :(得分:5)

您的控制器类继承自System.Web.Mvc.Controller,它在基类上有一个名为File的方法。您需要在使用中明确使用正确的语句:

using (FileStream fs = System.IO.File.Open(path, FileMode.OpenOrCreate))