我可以使用以下代码读取XLS文件:
string path =@"c:\r\1.xlsx";
OleDbConnection MyConnection = new OleDbConnection(@"provider=Microsoft.ACE.OLEDB.12.0;Data Source='" + path + @"';HDR=Yes;Jet OLEDB:Engine Type=37");
OleDbDataAdapter MyCommand = new OleDbDataAdapter("select * from [Sheet1$]", MyConnection);
DataSet DtSet = new DataSet();
MyCommand.Fill(DtSet);
...
...
但是 - 当我增强查询以包含一些SQL Server命令时,如
select *,case when 1=1 then 'a' else 'b' end as rr from [Sheet1$]
它变成了BANG
我知道OLEDB
在幕后使用access
jet / ace。
如何在这里使用纯T-SQL查询?
答案 0 :(得分:2)
您必须在查询Excel中使用IIF
select *,
IIF(1 = 1, 'a', 'b') as rr
from [Sheet1$]
并且,要创建多个case语句,只需嵌套它们,如下所示:
select *,
IIF(1 = 1, 'a', IIF( 2 = 2, 'c', 'b')) as rr
from [Sheet1$]
至于您是否可以使用纯MSSQL查询,我不相信您可以使用excel的任何连接都支持CASE语句。因此,您必须使用上述解决方案