溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

ASP.NET數(shù)據(jù)導(dǎo)入中如何實(shí)現(xiàn)Excel to MSSQL

發(fā)布時(shí)間:2021-10-28 15:56:59 來源:億速云 閱讀:157 作者:柒染 欄目:編程語言

這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)碛嘘P(guān)ASP.NET數(shù)據(jù)導(dǎo)入中如何實(shí)現(xiàn)Excel to MSSQL,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

實(shí)現(xiàn)Excel to MSSQL的過程是什么呢?需要注意什么呢?

做網(wǎng)站項(xiàng)目時(shí),可能會(huì)遇到將Excel文件中的ASP.NET數(shù)據(jù)導(dǎo)入至SQL Server數(shù)據(jù)庫的需求,把Excel也看作數(shù)據(jù)庫,使用OleDb連接后讀取數(shù)據(jù)然后寫入用SqlClient連接的SQL Server數(shù)據(jù)庫即可,技術(shù)上沒有什么難度。

但是需要考慮的一個(gè)問題是,系統(tǒng)安裝的環(huán)境一般是專用sql server服務(wù)器+web服務(wù)器+客戶端,而Excel文件往往在客戶端導(dǎo)入,如果直接使用SQL語句讀取的話,由于SQL在web服務(wù)器上運(yùn)行,不能讀取到客戶端的Excel地址,就會(huì)出錯(cuò)了。

既然知道了錯(cuò)誤的原因,解決方案也就有了:

1、把客戶端的Excel上傳至web服務(wù)器上某文件夾,注意要給該文件夾設(shè)置網(wǎng)絡(luò)用戶的“寫入”權(quán)限;

2、使用OleDb+sql語句讀取web服務(wù)器上的Excel文件

3、將讀取的ASP.NET數(shù)據(jù)導(dǎo)入到SQL Server 數(shù)據(jù)庫

4、將web服務(wù)器上的臨時(shí)Excel刪除

部分代碼如下:

string filename = FileUpload1.PostedFile.FileName.Substring(FileUpload1.PostedFile.FileName.LastIndexOf("\\"));  FileUpload1.PostedFile.SaveAs(Server.MapPath("fileupload\\")  + filename);//上傳文件   string conn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("fileupload\\") +  filename + ";Extended Properties=Excel 8.0";  string sqlin = "SELECT * FROM [Sheet2$]";  OleDbCommand olecommand = new OleDbCommand(sqlin, new OleDbConnection(conn));  OleDbDataAdapter adapterin = new OleDbDataAdapter(olecommand);  DataSet dsin = new DataSet();  adapterin.Fill(dsin);  DataTable dtin = dsin.Tables[0];//連接并讀取Excel數(shù)據(jù)   for (i = 3; i <= totalrow; i++)//將Excel文件中***個(gè)工作表的數(shù)據(jù)導(dǎo)入到sql數(shù)據(jù)庫scjd_youliaoxiaohaojihua表中  {       string sql = "insert into scjd_youliaoxiaohaojihua(yuexuhao,danwei,youpin,cheliangmingchengxinghao,zichanxingzhi,chepaihao,qiyou,chaiyou,beizhu) values('";       int j;       sql += DropDownList1.SelectedValue.ToString() + DropDownList3.SelectedValue.ToString();       if (DropDownList1.SelectedValue.ToString() != DateTime.Now.Year.ToString() || int.Parse(DateTime.Now.Month.ToString()) != int.Parse(DropDownList3.SelectedValue.ToString()))       {           sql += "20";       }       else      {          if (int.Parse(DateTime.Now.Day.ToString()) < 10)              sql += "0";          sql += DateTime.Now.Day.ToString();       }       if (i-3 + count < 9)             sql += "00";       else if (i-3 + count < 99)            sql += "0";       sql += (i -3 + 1 + count).ToString();       sql += "','";       for (j = 1; j < 8; j++)       {//遍歷Excel表中一行的所有列,除***一列           sql += dtin.Rows[i][j].ToString().Trim();           sql += "','";       }       sql += dtin.Rows[i][8].ToString().Trim();       sql += "')";       try      {            DoSql(sql);       }       catch (Exception eeeeeee)        {           Response.Write("<script>alert('數(shù)據(jù)導(dǎo)入錯(cuò)誤,請(qǐng)檢查Excel文件')</script>");           return;        }  }   FileInfo file = new FileInfo(Server.MapPath("fileupload/") +  filename);  if (file.Exists)  {//刪除文件          file.Delete();  }   protected void DoSql(string sql)//執(zhí)行sql語句的函數(shù)      {          SqlConnection conn = new SqlConnection();//創(chuàng)建連接對(duì)象          conn.ConnectionString = ConfigurationManager.AppSettings["conn"].ToString();//給連接字符串賦值          conn.Open();//打開數(shù)據(jù)庫          SqlCommand cmd = new SqlCommand(sql, conn);          cmd.ExecuteNonQuery();//          conn.Close();//關(guān)閉數(shù)據(jù)庫      }

注:

1、代碼均取自我最近剛做的一個(gè)小項(xiàng)目,部分?jǐn)?shù)據(jù)有較強(qiáng)針對(duì)性,并不通用,只有思路通用

2、由于能力和水平問題,部分代碼顯得有些笨拙,若能靈活運(yùn)用存儲(chǔ)過程,應(yīng)能大幅度簡化代碼

ASP.NET數(shù)據(jù)導(dǎo)入之實(shí)現(xiàn)Excel to MSSQL的情況就向你介紹到這里,希望通過介紹使你對(duì)于ASP.NET數(shù)據(jù)導(dǎo)入之實(shí)現(xiàn)Excel to MSSQL有所了解。

上述就是小編為大家分享的ASP.NET數(shù)據(jù)導(dǎo)入中如何實(shí)現(xiàn)Excel to MSSQL了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI