我使用如下SQL语句将Excel的数据导入MS SQL数据库中:
exec sp_configure 'show advanced options',1reconfigureexec sp_configure 'Ad Hoc Distributed Queries',1reconfigureSelect * From Sysobjects Where id=object_id('R') and  ObjectProperty(id, 'IsUserTable') = 1select * into R from OPENROWSET('MICROSOFT.JET.OLEDB.4.0','Excel 8.0;HDR=YES;DATABASE=C:\Users\mFun\R.xls',sheet1$)exec sp_configure 'Ad Hoc Distributed Queries',0reconfigureexec sp_configure 'show advanced options',0reconfigure但遇到一个问题,就是如果Excel表格中的某个列的第一个单元格的值为空,则接下来整个列有值的单元格导入后,都为空了!期待各位的回复,谢谢!
另外经测试,例如:一个Excel文档有20列  100行,其中第10列的前5行为空值,第6行的值为2010/10/08,如果直接导入,则第第10列的中的第6行的值夜为空了,如果我在导入之前,将第10列第六行的值:2010/10/08改为:'2010/10/08,则导入后 第10列的第6行的值不为空了;请问怎么解决这个问题呢?现在需要处理的Excel数据 有203列  6000行左右,数据量很大,所以对速度有要求。

解决方案 »

  1.   

    有个笨办法,打开一个access数据库,建立一个对应sqlserver表的链接表,打开表把excel数据复制粘贴过去
      

  2.   

    整体导入,有格式问题。为如,按数据库的(Field)形式导入。
      

  3.   

    是的,现在面临的问题是,这个份数据有203列,6000行,只需抓去其中的 20多列而已。单单抓取这20多列都会有格式问题,能否有个什么高效的方法修改Excel数据的格式呢?
      

  4.   

    直接導入可以的呀,按它的field格式去取,格式重新寫入
      

  5.   

    实际上这也是这种方法的优势所在,错误的数据和不合逻辑的数据在导入时就可以被发现,使用sql导入可以触发pk,fk,check约束,但不能触发触发器,如果在触发器中定义了一些数据的逻辑检查就会无效不是可以设置单元格的格式么
      

  6.   

    请教下,我直接导入,就会出现如果某列的开始几个值为空,则该列接下来有值的,也为空了。如果方便可加我QQ278727851,我发个Excel文档给您一起验证下。谢谢!
      

  7.   

    设置单元格格式也不行,只有在不是空值的值前,加上单引号,则导进去即可以。我现在想的是将修改Excel数据,在所有的值前边加上一个单引号。这样导进去就可以了。