Excel导入SQL Server以及数字文本混合问题 (测试通过)

来源:互联网 发布:为知笔记的注册登录 编辑:程序博客网 时间:2024/05/21 10:03

~~这部分测试通过

方法一:
对于数字和字母混合的导入:先将数据复制到txt,然后新建Excel,“自文本”导入--在第二步中,“文本识别符号”选择{无},第三步中,在“数据预览”表中选中所有列,设置“列数据格式”为“文本”。点击完成。导入的临时表的列全部为nvarchar(255)。

这种方法能同时解决这两个问题:

Excel中的数字导入到SQL Server中变成科学计数法样式的float问题;

Excel中数字和字母混合值,在导入后为NULL。

 

方法二:

通过下面的语句,并将含有数字和文本的栏位所有值前加一空格,这样读取时默认为文本类型

ulpath="C:/uld/"

wsheet = "Sheet1"

ultbl = "testtable"

Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Driver={Microsoft Excel Driver (*.xls)};" & _
    "DriverId=790;" & _
    "Dbq=" & ulpath & "/test.xls;"  & _
    "DefaultDir=" & ulpath & ";"

set ts = conn.Execute("select * from [" & wsheet &"$]") 

mysql="select * from " & ultbl

set rs=server.createobject("adodb.recordset")
rs.cursorlocation=3
rs.open mysql,con,3,3

for i = 0 to  ts.fields.count-1
 tsfld=tsfld &"|"& ucase(ts.fields(i).name) & "|"
next

 item=0
    Do While Not (ts.eof)
   item=item +1 
   rs.addnew
   for j= 0 to rs.fields.count-1
    if instr(tsfld,"|"& ucase(rs.fields(j).name&"|"))>0 then         
     if not isnull(ts.fields(rs.fields(j).name)) then
      d=trim(ts.fields(rs.fields(j).name))
     else
      d=ts.fields(rs.fields(j).name)
    end if 
     rs.fields(rs.fields(j).name)=d
    end if    
   next
   ts.movenext       
     rs.update
    Loop   
ts.close

conn.close
set ts = nothing
set rs=nothing
set conn=nothing

 


 

~~下面部分有待查证~~

应将excel文件放入服务器(要和SQL Server一个分区)。
**************

--打开安全许可(SQL server会定时自动关闭)
exec sp_configure 'show advanced options',1
reconfigure
exec sp_configure 'Ad Hoc Distributed Queries',1
reconfigure



SELECT * INTO TempUser FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'Excel 8.0;Database=C:/WWW//UserInfo.xls', 'SELECT * FROM [Sheet1$]')

--后缀名不能为xlsx,也就是必须是97-2003格式。

--[Sheet1$]中,Sheet1为Excel文件中的表单名称。

 

--关闭安全许可
exec sp_configure 'Ad Hoc Distributed Queries',0
reconfigure
exec sp_configure 'show advanced options',0
reconfigure


还可参考以下两篇文章 :
http://www.cnblogs.com/frostcity/archive/2008/03/07/1095484.html  (关于SQL Server官方对于从Excel导入数据时的自动格式判断规则)
http://hi.baidu.com/jetqu2003/blog/item/c1f66513a9da24866438dbf7.html (包含SQL Server与Access的导入,还有关于从Excel将数字导入SQL Server问题的另一种方法)

原创粉丝点击