2013-07-01 32 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(); 
相关问题