使用SQL Server命令通过ADO.NET读取excel?
我可以用这个代码读取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查询?
你必须使用IIF
来查询excel
select *, IIF(1 = 1, 'a', 'b') as rr from [Sheet1$]
而且,要创build一个多个case语句,只需将它们嵌套在一起,就像这样:
select *, IIF(1 = 1, 'a', IIF( 2 = 2, 'c', 'b')) as rr from [Sheet1$]
至于你是否可以使用一个纯粹的MSSQL查询,我不相信任何可以用于Excel的连接都支持CASE语句。 所以,你将不得不使用上述解决scheme