Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

File is a Method which is not valid in the given context [duplicate]

Trying to check whether a file exists inside a path but getting a build error on File.

File is a method and cannot be used in this context.

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

Full Class code

 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();
            }
        }
    }

How can fix this?

like image 631
b0w3rb0w3r Avatar asked May 10 '13 04:05

b0w3rb0w3r


1 Answers

You probably have this method inside MVC controller in which File method exists. Add in your code System.IO.File instead of File

like image 74
Piotr Stapp Avatar answered Oct 31 '22 09:10

Piotr Stapp