2013-07-01 31 views
-1

我開發的Web應用程序,將讓使用asp.net C#FileUpload控件的Excel文件。現在當點擊提交按鈕時,我想插入Excel數據到我的數據庫表中。我有SQL-Server中的數據庫。數據庫表& excel文件的字段是相同的。我想將該excel的數據插入到我的數據庫表中。那我該怎麼做呢?插入Excel文件中的數據到數據庫表中使用C#

+0

你嘗試過什麼嗎? – Lucas

+0

爲了讓你開始:http://msdn.microsoft.com/en-us/library/microsoft.office.interop.excel%28v=office.11​​%29.aspx然後,一旦你提供更多的信息(你已經試過),我敢肯定SO會。 –

+0

是指http://www.aspdotnet-suresh.com/2010/09/import-data-from-excel-to-sql-database.html –

回答

2

其他人使用Excel互操作來讀取評論Excel文件所提到的,但這是不安全的,可能有多個用戶的Web應用程序做。

要開始,看看在Excel Data Reader項目。我已經多次使用這個處理來自Web應用程序的Excel文件,並且它工作得很好。

0

您可以使用OLEDB類使用的OleDbConnection將Excel驅動程序從Excel文件直接讀取。獲取數據表中的數據並將其保存到數據庫。

string connectString = 
       "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=d:\\testit.xlsx;Extended Properties=\"Excel 12.0 Xml;HDR=YES;IMEX=1;\""; 
      OleDbConnection conn = new OleDbConnection(connectString); 
      OleDbDataAdapter da = new OleDbDataAdapter("Select * From [Sheet1$]", conn); 
      DataTable dt = new DataTable(); 
      da.Fill(dt); 
      // Save your datatable records to DB as you prefer. 
0

我一直在測試NPOI作爲另一個第三方Excel解析庫的替代品。

https://code.google.com/p/npoi/

到目前爲止,似乎工作得很好,有一個非常完整的功能集。當然,如果你需要的只是非常基本的Excel數據讀取(而不是寫入),那麼這裏提到的其他數據庫連接樣式接口應該工作得很好。

編輯:加入樣品代碼

using(FileStream fs = new FileStream("file.xls", FileMode.Open, FileAccess.Read)) 
{ 
    HSSFWorkbook wb = new HSSFWorkbook(fs); 
    double value = wb.GetSheet("Sheet1").GetRow(1).GetCell(1).NumericCellValue; 
    // read other values as necessary. 
} 
0

嘗試下面的代碼。也許它的原油,但它的工作原理

string connectString = 
      "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\\data\\exceltest.xlsx;Extended Properties=\"Excel 12.0 Xml;HDR=YES;IMEX=1;\""; 
     OleDbConnection conn = new OleDbConnection(connectString); 
     OleDbDataAdapter da = new OleDbDataAdapter("Select * From [Sheet1$]", conn); 
     DataTable dt = new DataTable(); 
     da.Fill(dt); 
     conn.Close(); 
     SqlConnection sqlc = new SqlConnection(@"server=.\SQLEXPRESS;user id=sa;pwd=windows;database=exceltest"); 
     sqlc.Open(); 
     SqlCommand cmd = new SqlCommand("select * from table1", sqlc); 
     SqlDataAdapter sda = new SqlDataAdapter("select * from table1", sqlc); 
     sda.InsertCommand = new SqlCommand("insert into table1", sqlc); 
     DataTable dbset = new DataTable(); 
     da.Fill(dbset); 
     SqlCommand cmdinsert = new SqlCommand(); 
     cmdinsert.Connection = sqlc; 
     foreach (DataRow dsrc in dt.Rows) 
     { 
      string insertcommand = "insert into table1" + dbset.TableName + " "; 
      string cols = ""; 
      string vals = ""; 
      DataRow dr = dbset.NewRow(); 
      foreach (DataColumn clm in dt.Columns) 
      { 
       dr[clm.ColumnName] = dsrc[clm.ColumnName].ToString(); ; 
       if (cols.Length > 0) 
       { 
        cols += ",[" + clm.ColumnName+"]"; 
       } 
       else 
       { 
        cols = "["+clm.ColumnName+"]"; 
       } 
       if (vals.Length > 0) 
       { 
        vals += "," + "'" + dsrc[clm.ColumnName].ToString() + "'"; 
       } 
       else 
       { 
        vals = "'" + dsrc[clm.ColumnName].ToString() + "'"; 
       } 

      } 
      insertcommand += "(" + cols + ") values("+vals+")"; 
      cmdinsert.CommandText = insertcommand; 
      cmdinsert.ExecuteNonQuery(); 
      insertcommand = ""; 

     } 

     sqlc.Close(); 
相關問題