簡體   English   中英

如何使用OLEDB連接上傳的Excel文件?

[英]How connect the uploaded excel file using OLEDB?

我只想檢查是否可以連接到我最近上傳的Excel文件,這里我使用的是OLE DB。 我想檢查是否可以正確連接到該文件並返回一條消息。 但是,當我嘗試連接到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;
            }

        }

只是在connExcel.Open();之后返回true connExcel.Open(); 如果可以連接則返回true,否則返回false

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM