select * from [sheet1$a1:b10]
若要引用指定的范围,请使用该范围的名称。例如:
select * from [mynamedrange]
ref:http://msdn.microsoft.com/library/chs/default.asp?url=/library/chs/dv_vbcode/html/vbtskcodeexamplereadingexceldataintodataset.asp
说明:
可以引用excel 工作簿中的三种对象:
• 整张工作表:[sheet1$] ,sheet1 就是工作表的名称
• 工作表上的命名单元格区域:[mynamedrange] (不需要指定工作表,因为整个xls中命名区域只能唯一)
xls命名方法:选中单元格范围》插入》名称》定义
• 工作表上的未命名单元格区域 :[sheet1$a1:b10]
(在关系数据库提供的各种对象中(表、视图、存储过程等),excel 数据源仅提供相当于表的对象,它由指定工作簿中的工作表和定义的命名区域组成。命名区域被视为“表”,而工作表被视为“系统表”)
注意:
•必须使用(方括号),否将报:
from 子句语法错误
•必须跟$(美元符号),否则报:
microsoft jet 数据库引擎找不到对象’sheet2’。请确定对象是否存在,并正确地写出它的名称和路径。
•如果工作表名称不对,或者不存在,将报:
’sheet2contentrsquo; 不是一个有效名称。请确认它不包含无效的字符或标点,且名称不太长。
•在 如何在 visual basic 或 vba 中使用 ado 来处理 excel 数据 中提到可以使用
~ 和 ’(波浪线和单引号)代替,使用ado。net测试没有成功,报:
from 子句语法错误
•当引用工作表明名([sheet1$])时,数据提供程序认为数据表从指定工作表上最左上方的非空单元格开始。比如,工作表从第 3 行,c 列开始,第3行,c列之前以及第1、2行全为空,则只会显示从第3行,c列开始的数据;以最后表最大范围内的非空单元结束;
•因此,如需要精确读取范围,应该使用命名区域 [namedrange],或者指定地址:[sheet1$a1:c10]
4。如何引用列名?
•根据默认连接字符串中,数据提供程序会将有效区域内的第一行作为列名,如果此行某单元格为空则用f1、f2表示,其中序数,跟单元格的位置一致,从1开始;
•如果希望第一行作为数据显示,而非列名,可以在连接串的 extended properties 属性指定:hdr=no
默认值为:hdr=no 格式如下:
string connstr = "provider=microsoft.jet.oledb.4.0;" +
"extended properties=\"excel 8.0;hdr=no\";" +
"data source=" + xlspath;
注意: excel 8.0;hdr=no 需要使用双引号(这里的反斜扛,是C#中的转义)
ref:ms-help://ms.vscc.v80/ms.msdn.v80/ms.visualstudio.v80.chs/wd_adonet/html/745c5f95-2f02-4674-b378-6d51a7ec2490.htm 中 《连接excel》节(说明:在我自己的msdn中,它的例子使用了两个双引号是错的,测试没有通过