日期:2014-05-18  浏览次数:20521 次

------------------------从Excel导入数据部分数据变成Null的问题。加了IMEX=1又报其它的错-----------------

SELECT   *  
FROM   OpenDataSource(   'Microsoft.Jet.OLEDB.4.0 ', 'Data   Source= "C:\Documents   and   Settings\Administrator\桌面\aaa.xls ";User   ID=Admin;Password=;Extended   properties=Excel   5.0 ')...[sheet1$]
在查询分析器里面运行的时候,有些数据变为null值。
按照网上的提示加上“IMEX=1”这句话把所有字段当作Text类型来读。

SELECT   *  
FROM   OpenDataSource(   'Microsoft.Jet.OLEDB.4.0 ', 'Data   Source= "C:\Documents   and   Settings\Administrator\桌面\aaa.xls ";User   ID=Admin;Password=;Extended   properties=Excel   5.0;IMEX=1 ')...[sheet1$]


一运行的话就抱错了。提示:
服务器:   消息   7399,级别   16,状态   1,行   3
OLE   DB   提供程序   'Microsoft.Jet.OLEDB.4.0 '   报错。  
[OLE/DB   provider   returned   message:   找不到可安装的   ISAM。]
OLE   DB   错误跟踪[OLE/DB   Provider   'Microsoft.Jet.OLEDB.4.0 '   IDBInitialize::Initialize   returned   0x80004005:       ]。

请问是什么问题呢?




------解决方案--------------------
Extended properties= "Excel 5.0;IMEX=1 " ')...[sheet1$] 加双引号
------解决方案--------------------

select * from OPENROWSET( 'Microsoft.Jet.OLEDB.4.0 ', 'Excel 8.0;Database=C:\Documents and Settings\liang\桌面\test1.xls;IMEX=1 ', 'SELECT * FROM [sheet1$] ')


這個試試
------解决方案--------------------
下面两种方式,都可以顺利读出数据:

1、
select *
from openrowset( 'Microsoft.Jet.OLEDB.4.0 ', 'EXCEL 8.0;HDR=YES;User id=admin;Password=;IMEX=1;DATABASE=D:\aa.xls ', [sheet1$])

2、
SELECT *
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0 ', 'Data Source= "D:\aaa.xls ";User ID=;Password=;Extended properties= "Excel 5.0;IMEX=1 " ')...[sheet1$]


--注意:
"Excel 5.0;IMEX=1 "需要加双引号

------解决方案--------------------
SELECT *
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0 ', 'Data Source= "D:\aaa.xls ";User ID=;Password=;Extended properties= "Excel 5.0;IMEX=1;HDR=yes " ')...[sheet1$]

這裡的extended properties是作為擴充屬性,所以要擴起來.
另外,就算用imex=1,也不一定能讀出來,
原因好像是,在用oledb讀excel時,是按行數掃描(默認好像是8行),以掃描出的多的類型作為參考類型,妥一點的辦法是先設置excel所有的存儲格屬性為文字,再填入數據.(左上角有個小綠三角)
如果先添數據再改屬性是沒用的.