使用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