OLEDB是微软的战略性的通向不同的数据源的低级应用程序接口。OLE DB不仅包括微软资助的标准数据接口开放数据库连通性(ODBC)的结构化问题语言(SQL)能力,还具有面向其他非SQL数据类型的通路。 OLEDB读取Excel的数据,并保存在DataSet中,实现代码如下: /// <summary> /// 该方法通过OLEDB获取excel的数据,并把它读入DataSet中 /// </summary> /// <param name="filePath"></param> /// <returns></returns> public static DataSet ImportExcelToDS(string filePath) { OleDbConnection myconn = null;//表示到数据源的一个唯一连接 DataTable dtSchema = null; List<string> tblNames = null; OleDbDataAdapter oda = null;//充当 DataSet 和数据源之间的桥梁,用于检索和保存数据 DataSet dsExcelData = null; if (filePath.Length <= 0) return null; //Excel数据连接字符串,指定IMEX=1将所有读入数据看做字符,指定HDR=yes或者no可以选择第一列是否当标题 string connString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath + ";Extended Properties='Excel 8.0;HDR=No;IMEX=1;'"; myconn = new OleDbConnection(connString); try { myconn.Open();//打开连接 //按照GUID的指示从数据源返回架构信息 dtSchema = myconn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" }); tblNames = new List<string>(); foreach (DataRow dr in dtSchema.Rows) { tblNames.Add(dr["TABLE_NAME"].ToString()); } string command = "select * from [" + tblNames[0] + "]"; oda = new OleDbDataAdapter(command, connString); dsExcelData = new DataSet(); oda.Fill(dsExcelData);//填充DataSet return dsExcelData; } catch (Exception se) { throw se; } finally { myconn.Close();//关闭连接 myconn.Dispose(); //释放由 Component 占用的资源 dtSchema.Dispose(); oda.Dispose(); dsExcelData.Dispose(); } } 通过Linq,将DataSet中的数据读入数据库的表中,具体实现代码如下: public static void TestUser(DataSet ds) { using (UserTestDataContext db = new UserTestDataContext()) { //从DataSet得到数据并赋值给数据库中的表 var query = from wwd in ds.Tables[0].AsEnumerable() where (wwd[0].ToString().Trim() != "id") select new { name = wwd[1].ToString().Trim(), pwd = wwd[2].ToString().Trim() }; List<user> listuser = new List<user>(); listuser.Clear(); //赋值 foreach (var q in query) { user u = new user(); u.name = q.name; u.pwd = q.pwd; listuser.Add(u); } db.users.InsertAllOnSubmit(listuser); db.SubmitChanges(); listuser = null; } }