请问一下Excel该怎么导入到SQL数据库中去,ASP.Net实现,可以给我讲一下原理或者发一下源码!谢谢

2024-11-17 21:27:50
推荐回答(1个)
回答1:

以下请参考,没有现成可用的东西,希望你从中获得的是实现思路,你要做的事情分成两步执行: 1. 先从你的Excel表获取数据集合,形成一个DataSet数据集,这个过程你需要指定文件路劲连接到Excel表读取数据。我这里有一个读取CSV文件数据的方法,读完文件之后返回一个DataSet的例子,和你要的EXCEL读取几乎一样。代码如下: #region 执行读取CSV文件并返回DataSet ///

///巧吵 执行读取CSV文件并返回DataSet /// /// 返回DataSet public DataSet CsvForDataset(string filePath, string fileName) { //string strConn = @"Driver={Microsoft Text Driver (*.txt; *.csv)};Dbq=" + filePath + ";Extensions=asc,csv,tab,txt; "; string strConn = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath + ";Extended Properties='text;HDR=No;FMT=Delimited'"; string strSQL = " Select * from " + fileName; //OdbcConnection objConn = new OdbcConnection(strConn); OleDbConnection objConn = new OleDbConnection(strConn); DataSet ds = new DataSet(); try { //OdbcDataAdapter da = new OdbcDataAdapter(strSQL, objConn); OleDbDataAdapter da = new OleDbDataAdapter(strSQL, objConn); da.Fill(ds, "OutputTemp_CGT"); } catch (Exception ex) { } finally { objConn.Dispose(); objConn.Close(); } return ds; } #endregion 2. 第二步是将你的DataSet写入到数据库中对应的表,这个通过一个循环去写指野入,需要注意数据集合中的内容与表字段的一一对应,以下是代码: #region 执行读取DataSet记录孝逗侍集合到Sql表 /// /// 执行读取DataSet记录集合到Sql表 /// /// 返回是否读取成功 public int DatasetForSQL(DataSet DS) { int result = -1; string strConn = "Initial Catalog='" + DatabaseName + "';password='" + DatabasePassword + "';User ID='" + DatabaseUser + "';Data Source='" + DatabaseServer + "' "; SqlConnection conn = new SqlConnection(strConn); SqlCommand cmd; conn.Open(); try { for (int i = 0; i < DS.Tables[0].Rows.Count; i++) { string strSerialNo = DS.Tables[0].Rows[i][0].ToString(); string strMACNo = DS.Tables[0].Rows[i][1].ToString(); string strWANUser = DS.Tables[0].Rows[i][2].ToString(); string strWANPassword = DS.Tables[0].Rows[i][3].ToString(); string strSSID = DS.Tables[0].Rows[i][4].ToString(); string strSSIDPassword = DS.Tables[0].Rows[i][5].ToString(); string strPIN = DS.Tables[0].Rows[i][6].ToString(); string strSql = " INSERT INTO OutputTemp_CGT(SerialNo,MACNo,WANUser,WANPassword,SSID,SSIDPassword,PIN) " + " Values ('" + strSerialNo + "','" + strMACNo + "','" + strWANUser + "','" + strWANPassword + "','" + strSSID + "','" + strSSIDPassword + "','" + strPIN + "') "; cmd = new SqlCommand(strSql, conn); cmd.ExecuteNonQuery(); cmd.Dispose(); } result = 0; } catch (Exception ex) { result = -1; } finally { conn.Dispose(); conn.Close(); } return result; } #endregion 补充: 特别说明一下,以上代码是两个完整的方法,分别有传入参数和返回数据,你可以在某一个事件或者逻辑执行中直接调用这两个方法,比如直接使用下面两句: DataSet ds = CsvForDataset("导入文件的完整路径和名称","导入的表名称") if(DatasetForSQL(ds)) { msg.Box("导入完成!"); }