SQL to Excel 三种方法 (转)

[入库:2005年8月18日] [更新:2007年3月24日]

本文简介:选择自 fangke 的 blog

方法1。使用copyfromrecordset(适用于access,sql)

第一次:49
第二次:45
第三次:43
第四次:43
第五次:42

方法2:使用querytable(适用于access,sql)

第一次:10
第二次:6
第三次:3
第四次:4
第五次:4

方法3:使用bcp(适用于sql)

从命令行直接运行时间为701毫秒,从vb中返回时间为0
测试代码如下:

方法1:

option explicit

private sub command1_click()
    dim t1 as date
    t1 = now()
   
   
    dim strconn as string
    strconn = "provider=sqloledb.1;integrated security=sspi;persist

security info=false;initial catalog=mlog;data source=sz09"
   
    dim cn as adodb.connection
    dim rs as adodb.recordset
   
   
    set cn = createobject("adodb.connection")
    cn.open strconn
    cn.cursorlocation = aduseserver
    set rs = cn.execute("table1", , adcmdtable)
   
    dim oexcel as excel.application
    dim obook as excel.workbook
    dim osheet as object
    set oexcel = createobject("excel.application")
    set obook = oexcel.workbooks.add
    set osheet = obook.worksheets(1)
   
    osheet.range("a1").copyfromrecordset rs
   
    obook.saveas "d:\1.xls"
    oexcel.quit
    set osheet = nothing
    set obook = nothing
    set oexcel = nothing
   
    rs.close
    set rs = nothing
   
    cn.close
    set cn = nothing
   
    msgbox (datediff("s", t1, now()))
   
end sub


方法 2:

option explicit

private sub command1_click()
    dim t1 as date
    t1 = now()
   
    'create a new workbook in excel
  dim oexcel as object
  dim obook as object
  dim osheet as object
  set oexcel = createobject("excel.application")
  set obook = oexcel.workbooks.add
  set osheet = obook.worksheets(1)
 
  dim strconn as string
    strconn = "provider=sqloledb.1;integrated security=sspi;persist

security info=false;initial catalog=mlog;data source=sz09"
   
  'create the querytable
 
  dim oqrytable as object
  set oqrytable = osheet.querytables.add( _
  "oledb;" & strconn & ";", osheet.range("a1"), "select * from table1")
  oqrytable.refreshstyle = xlinsertentirerows
  oqrytable.refresh false
 
  'save the workbook and quit excel
  obook.saveas "d:\1.xls"
  oexcel.quit
  set osheet = nothing
    set obook = nothing
    set oexcel = nothing
   
    msgbox (datediff("s", t1, now()))
end sub

方法3:

private sub command1_click()
    dim t1 as date
    t1 = now()
   
    dim scmd as string
    scmd = "bcp mlog..table1 out d:\1.csv -w -t , -r \n -s sz09 -p

kenfil"
    dim wsh as object
    set wsh = createobject("wscript.shell")
    wsh.run scmd, true
   
    msgbox (datediff("s", t1, now()))
end sub

note: cvs本身是一个可以被excel使用的文件(你可以直接在excel中打开这个文

件),如果你希望将这个文件转换成xls文件,很简单:

  dim oexcel as object
  dim obook as object
  dim osheet as object
  set oexcel = createobject("excel.application")
     
  set obook = oexcel.workbooks.open("d:\1.csv")
 
  'save as excel workbook and quit excel
  obook.saveas "d:\1.xls", xlworkbooknormal
  oexcel.quit
 

 

本文关键:SQL to Excel 三种方法 (转)
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top