File是一种在给定上下文中无效的方法

时间:2013-05-10 04:40:25

标签: asp.net-mvc file-io

尝试检查路径中是否存在文件但是在File上获取构建错误。

  

文件是一种方法,不能在此上下文中使用。

 if (!File.Exists(excelFilePath)) throw new FileNotFoundException(excelFilePath);
        if (File.Exists(csvOutputFile)) throw new ArgumentException("File exists: " + csvOutputFile);

完整班级代码

 static void CovertExcelToCsv(string excelFilePath, string csvOutputFile, int worksheetNumber = 1)
    {
        if (!File.Exists(excelFilePath)) throw new FileNotFoundException(excelFilePath);
        if (File.Exists(csvOutputFile)) throw new ArgumentException("File exists: " + csvOutputFile);

        // connection string
        var cnnStr = String.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=\"Excel 8.0;IMEX=1;HDR=NO\"", excelFilePath);
        var cnn = new System.Data.OleDb.OleDbConnection(cnnStr);

        // get schema, then data
        var dt = new DataTable();
        try
        {
            cnn.Open();
            var schemaTable = cnn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
            if (schemaTable.Rows.Count < worksheetNumber) throw new ArgumentException("The worksheet number provided cannot be found in the spreadsheet");
            string worksheet = schemaTable.Rows[worksheetNumber - 1]["table_name"].ToString().Replace("'", "");
            string sql = String.Format("select * from [{0}]", worksheet);
            var da = new OleDbDataAdapter(sql, cnn);
            da.Fill(dt);
        }
        catch (Exception e)
        {
            // ???
            throw e;
        }
        finally
        {
            // free resources
            cnn.Close();
        }

        // write out CSV data
        using (var wtr = new StreamWriter(csvOutputFile))
        {
            foreach (DataRow row in dt.Rows)
            {
                bool firstLine = true;
                foreach (DataColumn col in dt.Columns)
                {
                    if (!firstLine) { wtr.Write(","); } else { firstLine = false; }
                    var data = row[col.ColumnName].ToString().Replace("\"", "\"\"");
                    wtr.Write(String.Format("\"{0}\"", data));
                }
                wtr.WriteLine();
            }
        }
    }

如何解决这个问题?

1 个答案:

答案 0 :(得分:63)

你可能在MVC控制器中有这个方法,其中存在File方法。添加代码System.IO.File而不是File