经常需要在数据库与execl之间互导数据。net时代,ado.net可以使用使用microsoft.jet.oledb访问访问excel,网上已经有很多类似的资源,最典型也是最简单的可能如下:(asp.net环境)
// 连接字符串
string xlspath = server.mappath("~/app_data/somefile.xls"); // 绝对物理路径
string connstr = "provider=microsoft.jet.oledb.4.0;" +
"extended properties=excel 8.0;" +
"data source=" + xlspath;
// 查询语句
string sql = "select * from [sheet1$]";
dataset ds = new dataset();
oledbdataadapter da = new oledbdataadapter(sql, connstr);
da.fill(ds); // 填充dataset
// 在这里对dataset中的数据进行操作
// 输出,绑定数据
gridview1.datasource = ds.tables[0];
gridview1.databind();
//附带段可以获取excel表明的代码
mycnn.Open();
DataSet myds=new DataSet();
DataTable mytable=new DataTable();
//所有表的名称
mytable=mycnn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,new object{null,null,null,"TABLE"});
myds.Tables.Add(mytable);
很简单吧?!一切就像操作数据库一样,只是需要注意的是:
1。数据提供程序使用jet,同时需要指定extended properties 关键字设置 excel 特定的属性,不同版本的excel对应不同的属性值:用于 extended properties 值的有效 excel 版本。
对于 microsoft excel 8.0 (97)、9.0 (2000) 和 10.0 (2002) 工作簿,请使用 excel 8.0。
对于 microsoft excel 5.0 和 7.0 (95) 工作簿,请使用 excel 5.0。
对于 microsoft excel 4.0 工作簿,请使用 excel 4.0。
对于 microsoft excel 3.0 工作簿,请使用 excel 3.0。
ref:http://msdn.microsoft.com/library/chs/default.asp?url=/library/chs/dv_vbcode/html/vbtskcodeexamplereadingexceldataintodataset.asp
2。数据源路径使用物理绝对路径(同access)
3。如何引用表名?
对 excel 工作簿中表(或范围)的有效引用。
若要引用完全使用的工作表的范围,请指定后面跟有美元符号的工作表名称。例如:
select * from [sheet