Читать Excel через ADO.NET с помощью команд SQL Server? - PullRequest
0 голосов
/ 25 марта 2012

I может прочитать файл 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$]

это идет ОЧЕНЬ

enter image description here

Я знаю, что OLEDB использует access jet / ace за кулисами.

Как можно использовать чистый запрос T-SQLздесь

1 Ответ

2 голосов
/ 25 марта 2012

Вы должны использовать IIF при запросе Excel

select *,
    IIF(1 = 1, 'a', 'b') as rr  
from [Sheet1$]

И, чтобы создать несколько операторов, просто вложите их, как показано ниже:

select *,
    IIF(1 = 1, 'a', IIF( 2 = 2, 'c', 'b')) as rr  
from [Sheet1$]

Относительно того, можете ли вы использовать чистый запрос MSSQL, я не верю, что любое соединение, которое вы можете использовать с Excel, поддерживает оператор CASE. Итак, вам придется использовать вышеуказанное решение

...