如何使用 OLEDB 连接上传的 excel 文件?

How connect the uploaded excel file using OLEDB?

我只想检查是否可以连接到我最近上传的 Excel 文件,这里我使用的是 OLE DB。我想检查我是否可以正确连接到该文件并 return 一条消息。但是,当我尝试连接到 OLE DB 时,它会再次上传相同的文件。你能帮我解决这个问题吗

我正在使用 C# MVC 和 OLE DB 在检查其是否为 excel 文件之前,我已经上传了该文件。

调用业务和保存文件的控制器

if (_dataExchangeBusiness.IsExcelFile(fname)==true)
                    {                       
                        file.SaveAs(fname);
                        bool connectioncheck;
                        connectioncheck = _dataExchangeBusiness.CheckConnection(fname);
                        return Json(new { Result = "true", Message = "" });

                    }
                     else
                    {
                        return Json(new { Result = "false", Message = "" });
                    }

这是检查 excel 文件的业务

 public bool IsExcelFile(string fname)
        {          
            string extension = Path.GetExtension(fname);
            try
            {
               if(extension== ".xls" || extension== ".xlsx")
                {                                       
                    return true;
                }
                else
                {
                    return false;
                }
            }
            catch(Exception ex)
            {
                throw ex;
            }           
        }

这里是检查业务中的OLE DB连接检查

   public bool CheckConnection(string fname)
        {
            string extension = Path.GetExtension(fname);
            try
            {
                string connstring = string.Empty;
                switch (extension)
                {
                    case ".xls":
                        connstring = string.Format(ConfigurationManager.ConnectionStrings["Excel03ConString"].ConnectionString, fname);
                        break;
                    case ".xlsx":
                        connstring = string.Format(ConfigurationManager.ConnectionStrings["Excel07+ConString"].ConnectionString, fname);
                        break;
                }
                OleDbConnection connExcel = new OleDbConnection(connstring);
                OleDbCommand cmdExcel = new OleDbCommand();
                cmdExcel.Connection = connExcel;
                try
                {
                    connExcel.Open();
                    DataTable dtExcelSchema;

                    dtExcelSchema = connExcel.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
                    // cmdExcel.ExecuteNonQuery();
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
                finally
                {
                    connExcel.Close();
                }
            }
            catch(Exception ex)
            {
                throw ex;
            }
            return true;
        }

这里我期待的结果是true还是false,就是能否建立连接

public bool CheckConnection(string fname)
        {
            string extension = Path.GetExtension(fname);
            try
            {
                string connstring = string.Empty;
                switch (extension)
                {
                    case ".xls":
                        connstring = string.Format(ConfigurationManager.ConnectionStrings["Excel03ConString"].ConnectionString, fname);
                        break;
                    case ".xlsx":
                        connstring = string.Format(ConfigurationManager.ConnectionStrings["Excel07+ConString"].ConnectionString, fname);
                        break;
                }
                OleDbConnection connExcel = new OleDbConnection(connstring);
                OleDbCommand cmdExcel = new OleDbCommand();
                cmdExcel.Connection = connExcel;
                //bool canconnect = false;
                try
                {

                    connExcel.Open();
                    return true;
                    //DataTable dtExcelSchema;

                    //dtExcelSchema = connExcel.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
                    // cmdExcel.ExecuteNonQuery();
                }
                catch 
                {
                    return false;
                }
                finally
                {
                    connExcel.Close();
                }
            }
            catch(Exception ex)
            {
                throw ex;
            }

        }

只要 return true after connExcel.Open(); 将得到 true if can connect else return false