繁体   English   中英

使用SQL Server命令通过ADO.NET读取excel?

[英]Read excel via ADO.NET with SQL Server commands?

可以使用以下代码读取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查询?

你必须在查询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语句。 因此,您必须使用上述解决方案

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM