Excel与数据库操作

VC6.0中用ADO操作Excel的连接字符串:

"DSN = Excel Files;DBQ = FilePath + FileName;DefaultDir = FilePath;Driver ID = 790 ;MaxBuffersize = 2048 ;pagetimeout = 5 ;"

例如:

DSN = Excel Files;DBQ = D://T_20071122.xls;DefaultDir = D://;DriverId = 790 ;MaxBufferSize = 2048 ;PageTimeout = 5 ;

建立一个这样的连接对象,就可以把Excel当作一个数据库进行操作,其中每一个Worksheet相当于数据库中一张表,在操作这些Sheet时,需要用[]将sheet名+$包含起来,比如:select * from [totalprice$] 

在.NET中操作Excel很方便,ADO.NET把大部分繁杂的工作都替我们做了,

C#.NET中用ADO.NET操作Excel连接字符串:

Provider = Microsoft.Jet.OLEDB. 4.0 ;data source = "  + dataFilePath +  " ;Extended Properties = Excel  8.0 ;

实际上,上面的操作都需要用到MS的Jet引擎,上面的连接串在有Jet的情况下就可以操作成功,不过Jet的运行性能不高,所以,还有一个性能比较高但是有条件限制的Sql语句(内嵌连接字符串),就是SqlServer的DTS

条件,运行机器上需要有Sql

语句:

SELECT   *   FROM   OPENROWSET ( ' Microsoft.Jet.OLEDB.4.0 ' , ' Excel 8.0;HDR=NO;DATABASE=ExcelFilePath; ' ,WorksheetName$)

例如:

INSERT   INTO  t_wcall_log(up_id,up_num,up_result,sn_id)
SELECT   *   FROM   OPENROWSET ( ' Microsoft.JET.OLEDB.4.0 ' , ' Excel 8.0;HDR=NO;DATABASE=D://BC_CALL.xls; ' ,统计$)

其中SELECT子句中的*可以用Excel中的列名列表代替,当把Excel中的Worksheet当数据表处理的时候,需要在后面加上$,而且此时的Worksheet名不能以数字开头,否则将出现错误:在XXX中不存在表XX

如果要将数据由本地提交到局域网服务器上,可以将Excel所在的文件夹设置为共享,然后用“IP/文件名”替换掉上面的ExcelFilePath,如:

SELECT   *   FROM  OPENSET( ' Microsoft.JET.OLEDB.4.0 ' , ' Excel 8.0;HDR=NO;DATABASE=192.168.0.113//BC_CALL.xls; ' ,统计$)

其原理是利用本地Sql和服务器Sql之间的DTS进行传输操作,实际上和把数据放到本地Sql,然后再传到服务器Sql是一样的,只不过,用上面的语句可以利用一下Sql的内存表,数据直接过内存传输,而不产生真正的数据表

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值