我想打印EXCEL中的数据,具体要求如下:
姓名:张三      年龄:33
学历:本科      性别:男
         。
         。
         。
其中   姓名: 年龄: 学历:性别:等都为固定的标题
       张三   33     本科  男    都为Excel 中sheet1里面的数据,大概有1000条数据自动实现循环打印直到结束请问如何实现,因小弟VB是初学都,公司又急着要解决这个任务
各位大哥帮帮忙 请给个实例

解决方案 »

  1.   

    vb自带的datareport,不过操作比较烦琐
      

  2.   

    使用Excel来打印就行了:Private Sub Command1_Click()
        On Error Resume Next
        
        Dim oConn As New ADODB.Connection
        Dim oRS As New ADODB.Recordset
        oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\test.xls;Extended Properties=""Excel 8.0;HDR=YES;IMEX=1"""
        oConn.CursorLocation = adUseClient
        oRS.Open "select 姓名,年龄,学历,性别 from [Sheet1$]", oConn, adOpenDynamic, adLockReadOnly
        If oRS.EOF Then
            oRS.Close
            oConn.Close
            Set oRS = Nothing
            Set oConn = Nothing
        End If
        
        Dim xls As New Excel.Application
        Dim book As New Excel.Workbook
        Dim sheet As New Excel.Worksheet
        Set book = xls.Workbooks.Add  '新增工作簿
        Dim i As Long
        Set sheet = book.Sheets(1)
        oRS.MoveFirst
        sheet.Columns(1).ColumnWidth = 15 '设置列宽
        sheet.Columns(2).ColumnWidth = 15
        '往工作表里插入数据
        For i = 1 To oRS.RecordCount
            sheet.Cells((i - 1) * 2 + 1, 1) = "姓名:" & oRS("姓名")
            sheet.Cells((i - 1) * 2 + 1, 2) = "年龄:" & oRS("年龄")
            sheet.Cells(i * 2, 1) = "学历:" & oRS("学历")
            sheet.Cells(i * 2, 2) = "性别:" & oRS("性别")
            oRS.MoveNext
        Next
        '给表格画边框线
        '......
        
        '如果需要预览,请把下面这两句注释去掉
    '    xls.Visible = True
    '    sheet.PrintPreview  '预览
        sheet.PrintOut  '打印    xls.DisplayAlerts = False
        book.Close False
        xls.Quit   '退出Excel
        Set sheet = Nothing
        Set book = Nothing
        Set xls = Nothing
        
        oRS.Close
        oConn.Close
        Set oRS = Nothing
        Set oConn = Nothing
        If Err.Number <> 0 Then MsgBox Err.Description
    End Sub
      

  3.   

    麻烦问下:frmvar是一个窗体
    dg是该窗体上的一个控件,该控件已和数据库中的 表连接
    IsDate是该控件上的一个属性(连接表中的一个字段)
    该如何写?
    我是这么写的,但是出生日期不被识别frmvar.dg.IsDate = 出生日期 
      

  4.   

    请问faysky2()是在excel中调用宏命令嘛  
    一张纸打印两个人的信息
      

  5.   

    to:sxlcom(木头) 
    上面的代码是在vb中运行的,不是宏代码一张纸打印两个人的信息
    -------------------------
    那得插入分页符(这个很费时间)
    to: liulangkelemao
    写法是正确的,可以把窗体名去掉(dg.IsDate = 出生日期 )
      

  6.   

    记得先引用ADO(工程/引用/Microsoft ActiveX Data Object 2.X Library)要想两个人的信息为一页,在代码里写 加上分页符 的代码就行了,不过代码执行起来要花费NNN多的时间(你测试的时候,搞几行数据就行了,否则,你慢慢等吧)......
    '往工作表里插入数据
        For i = 1 To oRS.RecordCount
            sheet.Cells((i - 1) * 2 + 1, 1) = "姓名:" & oRS("姓名")
            sheet.Cells((i - 1) * 2 + 1, 2) = "年龄:" & oRS("年龄")
            sheet.Cells(i * 2, 1) = "学历:" & oRS("学历")
            sheet.Cells(i * 2, 2) = "性别:" & oRS("性别")
            sheet.HPageBreaks.Add Before:=Cells(i * 4 + 1, 2)  '以每两个人的信息作一页,添加分页符
            oRS.MoveNext
        Next
        '给表格画边框线
    ......
      

  7.   

    请问 faysky2() 
    Dim xls As New Excel.Application
    是调用的是什么控件,控件是什么
      

  8.   

    为什么为运行到Dim xls As New Excel.Application出错
      

  9.   

    Dim xls As New Excel.Application
    是调用的是什么控件,控件是什么
    为什么为运行到Dim xls As New Excel.Application出错
    ------------------------------
    不是用控件,是引用对象,引用Excel后就好了(工程/引用/Micorsoft Excel X.0 Library)
      

  10.   

    Private Sub Command1_Click()
        On Error Resume Next  '<-------------把这句注释掉,看错误指向那句
    ......
      

  11.   

    估计错误出在这句:
    oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\申报错误单位名单.xls;Extended Properties=""Excel 8.0;HDR=YES;IMEX=1"""代码中App.Path 表示工程所在的目录,所以你要把 申报错误单位名单.xls 文件放到工程所在的目录下
      

  12.   

    非常感谢faysky2()
    马上给分
      

  13.   

    再请问faysky2()一下
    如果我想在datareport中实下以上的打印该如何做
    请给个实例,分不够可以再加,拜托