如何在使用SQL(ADO)将Excel拉入C#时排除空行而不排除空单元格?

我有一个像这样的查询:

 SELECT * FROM OPENROWSET('MSDASQL','Driver = {Microsoft Excel Driver(* .xls)}; DBQ = D:\ test.xls','SELECT * FROM Sheet1 $''')

这将返回行,如果他们曾经编辑,然后删除,这些行都是空的。 我想排除这些,但仍然包括具有良好的数据,但可能的空单元格的行。

我的第一本能是做一个“WHERE每列不是NULL”并列在一起,就像这样:

 SELECT * FROM OPENROWSET('MSDASQL','Driver = {Microsoft Excel Driver(* .xls)}; DBQ = D:\ test.xls','SELECT * FROM Sheet1 $''')
哪里 
 (
   Col1不是NULL 
  而Col2不是NULL 
  而Col3不是NULL 
  和Col4不是NULL 
 )

这有效地消除了空行,但由于某种原因,也消除了Col4有空条目的行。 我在WHERE子句周围尝试了这个方法。

有没有人看到我可能做错了,或者取而代之,有一个不同的方法,我可以用来实现相同的结果的build议?

这是目前正在使用ADO的C#实现,但我正在testing查询使用Sql Server Management Studio 2008。

WHERE ( Col1 IS NOT NULL OR Col2 IS NOT NULL OR Col3 IS NOT NULL OR Col4 IS NOT NULL ) 

要么

在哪里合并(Col1,Col2,Col3,Col4)不是NULL(oledb / excel没有合并function)