送50分加350分。引碧血剑的异构数据库之间用SQL语句转换 Excel 转 SQL Server.更深一点。详...(50分)

  • 主题发起人 主题发起人 walimg
  • 开始时间 开始时间
W

walimg

Unregistered / Unconfirmed
GUEST, unregistred user!
select * &nbsp;FROM OpenDataSource('Microsoft.Jet.OLEDB.4.0','Data Source=&quot;E:/11.xls&quot;;Extended Properties=&quot;Excel 5.0;HDR=Yes;&quot;;Persist Security Info=False')...sheet$ <br>注:sheet是 Excel &nbsp;的表名.<br>----------------上面这一句是指定文件和表名,测试成功--------------------<br>' select * into &nbsp;[' + tbname.Text + '] &nbsp;FROM OpenDataSource(''Microsoft.Jet.OLEDB.4.0'',''Data Source=&quot;' + excelDir.Text + '&quot;;Extended Properties=&quot;Excel 5.0;HDR=Yes;&quot;;Persist Security Info=False'')...' + Sheet.Text + '$'<br>----------------上面这一句是动态指定文件和动态表名,测试成功--------------------<br>问题:如果Excel表名是:2006-08-15sheet<br>那么将有异常,忘高手相助。感谢各位。
 
楼主不用费力气解决这个问题了 OpenDataSource技术只支持符合标识符条件的表名<br>也就是字母或下划线开头的字母下划线数字串<br>表明不是标识符是不能被识别的
 
楼主不用费力气解决这个问题了 OpenDataSource技术只支持符合标识符条件的表名<br>也就是字母或下划线开头的字母下划线数字串<br>表名不是标识符是不能被识别的
 
我曾经试过,把SQL转到ACCESS,也是用OpenDataSource,可惜,用本地的SQLSERVER测试完全正常,换了网络的SQLSERVER就不行了.也不知道原因.
 
TO ball_cao<br> &nbsp;我的EXCEL 表名,只是第一个字母是数字时,就不能用了。<br>有没有像SQL SERVER 那种用[] 大括号来米补的? <br> 有没有高手路过。期待.....
 
我是这么做的,你参考一下:<br>思路:<br> ado连接到Excel,然后通过ODBC写到Sql server中。支持异地,数字sheet名。<br>1.<br> &nbsp;得到excel的ado连接串xlsCnt,tmpXlsFileName是Excel文件名。HDR:是否含标题行,IMEX是否文本混合模式。<br> &nbsp;sExcelConnect = 'Provider=Microsoft.Jet.OLEDB.4.0; '<br> &nbsp; &nbsp;+ 'User ID=Admin; '<br> &nbsp; &nbsp;+ 'Data Source=%s; '<br> &nbsp; &nbsp;+ 'Mode=Share Deny None; '<br> &nbsp; &nbsp;+ 'Extended Properties=&quot;%s;HDR=%s;IMEX=%s&quot;; ';<br> &nbsp;xlsCnt := format(sExcelConnect, [tmpXlsFileName, 'excel 8.0', 'yes', '1']);<br>2.<br> &nbsp;得到SqlServer的ODBC字串cntStr<br> &nbsp;ODBC_SqlStr =<br> &nbsp; &nbsp;' IN [ODBC] [ODBC;Driver=SQL Server;UID=%s;PWD=%s;Server=%s;DataBase=%s] ';<br> &nbsp;cntStr := format(ODBC_sqlStr, [UserID, Password, DBServer, DBString]);<br>3.<br> 执行过程,acTmp是个TAdoconnection,sSheet是excel的sheet表名,我是通过自动检索出来的下拉列表让用户选择的。<br> &nbsp;with dm.acTmp do<br> &nbsp;begin<br> &nbsp; &nbsp;close;<br> &nbsp; &nbsp;connectionstring := XlsCnt;<br> &nbsp; &nbsp;s := 'select * into tmp ' + cntStr + ' from [' + sSheet + ']';<br> &nbsp; &nbsp;Execute(s);<br> &nbsp;end;<br><br>还有什么疑问尽管说,这些是摘选出来的,全部内容太多太乱,觉得没必要。
 
to: keynexy<br> &nbsp;感谢,加点注视吧。要不把整个文件都贴出来。<br><br>这里有一贴:<br>http://community.csdn.net/Expert/topic/4954/4954435.xml?temp=.5545008<br>但是效果不一样,得出的结果没有字段。<br>继续等待高手。。。。。。。
 
后退
顶部