欢迎来到天天文库
浏览记录
ID:9251350
大小:27.50 KB
页数:11页
时间:2018-04-25
《ado.net读取excel常见问题总结》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、Ado.Net读取Excel常见问题总结经常需要在数据库与Execl之间互导数据。net时代,ADO.NET可以使用使用Microsoft.Jet.OleDb访问访问Excel,网上已经有很多类似的资源,最典型也是最简单的可能如下:(asp.net环境) //连接字符串 stringxlsPath=Server.MapPath("~/app_data/somefile.xls");//绝对物理路径 stringconnStr="Provider=Microsoft.Jet.OLEDB.
2、4.0;"+ "ExtendedProperties=Excel8.0;"+ "datasource="+xlsPath; //查询语句 stringsql="SELECT*FROM[Sheet1$]"; DataSetds=newDataSet(); OleDbDataAdapterda=newOleDbDataAdapter(sql,connStr); da.Fill(ds);//填充DataSet //在这里对DataSet中的数据进行操作 //输出,绑定数据
3、 GridView1.DataSource=ds.Tables[0]; GridView1.DataBind(); 很简单吧?!一切就像操作数据库一样,只是需要注意的是: 1。数据提供程序使用Jet,同时需要指定ExtendedProperties关键字设置Excel特定的属性,不同版本的Excel对应不同的属性值:用于ExtendedProperties值的有效Excel版本。 对于MicrosoftExcel8.0(97)、9.0(2000)和10.0(2002)工作簿,请使用Ex
4、cel8.0。 对于MicrosoftExcel5.0和7.0(95)工作簿,请使用Excel5.0。 对于MicrosoftExcel4.0工作簿,请使用Excel4.0。 对于MicrosoftExcel3.0工作簿,请使用Excel3.0。 ref:http://msdn.microsoft.com/librar...dataintodataset.asp 2。数据源路径使用物理绝对路径(同Access) 3。如何引用表名? 对Excel工作簿中表(或
5、范围)的有效引用。 若要引用完全使用的工作表的范围,请指定后面跟有美元符号的工作表名称。例如: select*from[Sheet1$] 若要引用工作表上的特定地址范围,请指定后面跟有美元符号和该范围的工作表名称。例如: select*from[Sheet1$A1:B10] 若要引用指定的范围,请使用该范围的名称。例如: select*from[MyNamedRange] ref:http://msdn.microsoft.com/librar...dataintoda
6、taset.asp 说明: 可以引用Excel工作簿中的三种对象: •整张工作表:[Sheet1$],Sheet1就是工作表的名称 •工作表上的命名单元格区域:[MyNamedRange](不需要指定工作表,因为整个xls中命名区域只能唯一) XLS命名方法:选中单元格范围》插入》名称》定义 •工作表上的未命名单元格区域:[Sheet1$A1:B10] (在关系数据库提供的各种对象中(表、视图、存储过程等),Excel数据源仅提供相当于表的对象,它由指定工作簿中的工作表和定义的命名
7、区域组成。命名区域被视为“表”,而工作表被视为“系统表”) 注意: •必须使用[](方括号),否将报: FROM子句语法错误 •必须跟$(美元符号),否则报: MicrosoftJet数据库引擎找不到对象'Sheet2'。请确定对象是否存在,并正确地写出它的名称和路径。 •如果工作表名称不对,或者不存在,将报: 'Sheet2$'不是一个有效名称。请确认它不包含无效的字符或标点,且名称不太长。 •在如何在VisualBasic或VBA中使用ADO来处理Excel数据中提到可以
8、使用 ~和'(波浪线和单引号)代替[],使用ADO。NET测试没有成功,报: FROM子句语法错误 •当引用工作表明名([Sheet1$])时,数据提供程序认为数据表从指定工作表上最左上方的非空单元格开始。比如,工作表从第3行,C列开始,第3行,C列之前以及第1、2行全为空,则只会显示从第3行,C列开始的数据;以最后表最大范围内的非空单元结束; •因此,如需要精确读取范围,应该使用命名区域[NamedRange],或者指定地址:[Sheet1$A1:C10] 4。如何引用列名?
此文档下载收益归作者所有