从SQL Server 2005读取MS Excel文件

我需要从SQL Server 2005中的查询中读取Microsoft Excel 2003文件(.xls),然后将一些数据插入到某些表中。 读取文件,然后使用它的数据本身并不是一个问题,但我发现,对于列,有时我会得到一个NULL值,而不是Excel文件中显示的值。 更具体地说:该列总是只有一个字符长,并且可以包含0-9中的任何一个数字,或者字母“K”。 这是当列包含'K',查询给我一个NULL值。 我的假设是,由于前几行包含数字作为该列的值,查询假定它们将始终是数字,并且当它find一个字母时,它将它变成NULL。

我尝试将Excel文件中的单元格的格式更改为文本,并使用CAST和CONVERT(而不是同一时间)值试图使其成为一个varchar,但它什么都不做。

这看起来像一个老的Excel的OLE DB驱动程序。 不是说它不起作用 – 你仍然可以用它“查询”电子表格。 也许尝试一些新的:

 SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0 Xml;HDR=YES;Database=C:\File.xls', 'SELECT * FROM [Sheet1$]') 

您需要在SQL Server上更新ODBC驱动程序(确保获得适当的32位和64位版本)。