声明一个EXCEL的对象,然后调用它的Open方法打开一个文件,或者直接使用printOut函数输出,具体对于EXCEL的编程可以参考EXCEL开发大全这本书。

解决方案 »

  1.   

    看MSDN的"HOWTO: Create Excel Chart w/OLE Automation from Visual Basic",有一个例子,把例子看懂了就没问题了。
      

  2.   

    一种方法是用OLE控件,很简单的,几呼不用编码。看看MSDN吧,5分钟就能搞定。
    其实在VB中可以用VBA的,就引用EXCEL的对象库。并不麻烦。所以关于打印的问题,请看我前几天在CSDN发了一个文章,如下:这个程序可以将下图表格中(mshflexgrid控件)的
    数据生成一个excel表,这样可以省去用vb
    来编写打印排版程序的麻烦。想一想自已动
    手用vb或delphi写一个像excel的排版功能
    一样的东东,是多么的恐怖!!。所以嘿嘿。。http://go.163.com/~chunpeng/project/grid.jpg原程序下载:
    因为我用的是access2000的样本数据库---
    northwind.mdb 所以安了office2000的可以
    下载下面这个:(不代northwind.mdb,下载后请将
    office2000里那个copy到这个程序的目录中就行)
    go.163.com/~chunpeng/project/printexcela.zip没有northwind.mdb的可以下载这个:
    go.163.com/~chunpeng/project/printexcel.zip
    高手可以直接看下面,如果用vb做过数据库应
    用的朋友给点意见,这种方法我曾在多个mis
    系统中见过,只不过生成的是word文档。这是
    一种比较典型的方法。public withevents rs as adodb.recordset
    dim conn as adodb.connection
    dim mypanel as panelprivate sub form_load()
    set rs = new adodb.recordset
    set conn = new adodb.connection
    conn.cursorlocation = aduseclient
    conn.open "provider=microsoft.jet.oledb.4.0;data source=" + app.path + "\northwind.mdb;"
    rs.open "select *from 产品", conn, adopenstatic, adlockoptimistic
    set msgrid1.datasource = rsstatusbar1.panels.clear
    set mypanel = statusbar1.panels.add(, "record")
    mypanel.autosize = sbrcontents
    mypanel.text = "总共有" & " " & rs.recordcount & " " & "条记录"
    end sub
    private sub form_resize()
    with msgrid1
    .left = 0
    .top = toolbar1.height
    .width = me.scalewidth - 10
    .height = me.scaleheight - (statusbar1.height + 700)
    end with
    end subprivate sub print_cmd_click()
    form2.show
    dim myexcel as new excel.application, i, j, k as integer, col as string
    with myexcel
    on error goto excle
    .application.visible = false
    .workbooks.add
    '***********画字段************
    j = 0
    'example: b2 ----g2 '列 本程序从b列,和第2行开始
    for i = 66 to (66 + rs.fields.count - 1) '从rs中头一个字段到最后一个
    col = chr(i) & "2" 'chr(66)就是b
    'debug.print col
    range(col).select
    activecell.formular1c1 = rs.fields(j).name '
    j = j + 1
    next i
    '****************************
    '*************以先横后竖顺序画表***************
    k = 0
    rs.movefirst
    doevents
    for j = 3 to 3 + rs.recordcount '本程序从b3开始,所以用3
    k = 0
    for i = 66 to (66 + rs.fields.count - 1)
    col = chr(i) & cstr(j) '得到目标表格的值如 c3
    range(col).select
    activecell.formular1c1 = rs.fields(k)
    k = k + 1
    next i
    on error resume next
    form2.probar.value = form2.probar.value + 1
    rs.movenextif rs.eof = true then
    unload form2
    .application.visible = true
    end ifnext j
    '************************************
    end with
    exit subexcle:
    msgbox ("您没有安装excle2000,请先安装excel2000")
    end sub