OLEDB查询含/特殊字符的Excel列异常,不修改列名如何解决?
解决OLEDB查询Excel含特殊字符列名的问题
嘿,这个问题我碰到过好几次了!当Excel列名带/这类特殊字符又没法改表格的时候,OLEDB其实有现成的解决办法,不用纠结改列名,给你几个实用方案:
方法一:用双引号包裹特殊列名
不少OLEDB驱动(比如常用的ACE OLEDB 12.0)对带特殊字符的列名,支持用双引号直接包裹。你可以把查询改成这样:Select count(*) From [DashBoard$A2:A100] WHERE "Mono/Multicube" LIKE 'UAT%'方法二:保留方括号+检查连接字符串配置
如果你更习惯用方括号,那得确认OLEDB连接字符串里开启了列头识别,也就是加上HDR=Yes(告诉驱动第一行是列名,不是数据)。比如你的连接字符串可以写成这样:Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\你的文件路径.xlsx;Extended Properties="Excel 12.0 Xml;HDR=Yes;"另外要注意:你原来的查询里指定了
[DashBoard$A2:A100]这个范围,得确保Mono/Multicube列确实在这个范围内(如果这个列不在A列,那这个范围就错了,得改成包含该列的范围,比如[DashBoard$A2:Z100]或者直接用[DashBoard$]代表整个工作表)。方法三:给列名起别名(可选优化)
要是上面的方法都没问题,还可以给特殊列名起个简洁的别名,方便后续查询使用:Select count(*) From [DashBoard$] WHERE [Mono/Multicube] LIKE 'UAT%' -- 或者如果需要在SELECT里用到该列,别名写法: -- Select [Mono/Multicube] AS MonoMulticube, count(*) From [DashBoard$] WHERE ...
最后提个小提醒:尽量用新的ACE驱动(支持xlsx格式),比旧的Jet驱动对特殊字符的兼容性更好哦。
内容的提问来源于stack exchange,提问作者Nanda kumar Baskar
相关产品推荐
相关产品推荐

