谁能详细一点地告诉我在VB里面怎么实现打印。另:不知道哪位大侠有相关的程序?方便的话请给我发一份让我参考参考,感激不尽!!!我的电子邮箱:[email protected]

解决方案 »

  1.   

    小弟,你找我找对了,给你一段代码,自己仔细研究去吧,包你好用:
    Private Sub Image5_Click() '打印报表
        Dim i As Integer
        Dim pageleft As Integer
        Dim pageheader As Integer
        Dim pagefooter As Integer
        Dim pageright As Integer
        Dim startx As Integer
        Dim starty As Integer
        Dim startline As Integer
        Dim endline As Integer
        Dim usewidth As Integer
        Dim useheight As Integer
        pageheader = 25
        pagefooter = 25
        pageleft = 20
        pageright = 20
        
        '定义纸张类型A4
        Printer.FontSize = 20
        Printer.PaperSize = 9
        Printer.ScaleMode = 6
        Printer.FontBold = False
        Printer.ScaleLeft = -20
        Printer.ScaleTop = -25
        Printer.ScaleWidth = 210
        Printer.ScaleHeight = 297
        usewidth = Printer.ScaleWidth - 40
        useheight = Printer.ScaleHeight - 50
        Printer.CurrentX = 0
        Printer.CurrentY = 0
        Printer.DrawWidth = 2
        
        '打印主标题
        Printer.FontSize = 20
        Printer.CurrentX = (usewidth - Printer.TextWidth(Me.Text1.Text & "经济情况表")) / 2
        Printer.CurrentY = Printer.ScaleTop
        Printer.Print Me.Text1.Text & "经济情况表"
        
        '打印空白行
        Printer.FontSize = 8
        Printer.CurrentX = (usewidth - Printer.TextWidth("")) / 2
        Printer.CurrentY = Printer.CurrentY + 1
        Printer.Print ""
        
        '打印副标题
        Printer.FontSize = 15
        Printer.CurrentX = (usewidth - Printer.TextWidth(commonth & "月份经济情况报表")) / 2
        Printer.CurrentY = Printer.CurrentY + 1
        Printer.Print commonth & "月份经济情况报表"
        
        '打印空白行
        Printer.FontSize = 8
        Printer.CurrentX = (usewidth - Printer.TextWidth("")) / 2
        Printer.CurrentY = Printer.CurrentY + 1
        Printer.Print ""
        
        '打印表的内容
        '首先打印第一条横线
        '打印最上边的第一条横线
        Printer.CurrentX = pageleft + Printer.ScaleLeft
        startline = Printer.CurrentY + 1
        Printer.Line -((Printer.ScaleLeft + Printer.ScaleWidth - pageleft), Printer.CurrentY)
        
        
        Printer.FontSize = 12
        Printer.CurrentY = Printer.CurrentY + 1
        starty = Printer.CurrentY
        Printer.CurrentX = ((Printer.ScaleWidth - 40) / 3 - Printer.TextWidth("")) / 2
        Printer.Print ""
        
        Printer.FontSize = 12
        Printer.CurrentX = usewidth / 3 + ((usewidth / 3 - Printer.TextWidth("今年经济情况")) / 2)
        Printer.CurrentY = starty
        Printer.Print "今年经济情况(万元)"
        
        Printer.FontSize = 12
        Printer.CurrentX = (usewidth / 3) * 2 + ((usewidth / 3 - Printer.TextWidth("去年经济情况")) / 2)
        Printer.CurrentY = starty
        Printer.Print "去年经济情况(万元)"
        
        Printer.CurrentX = pageleft + Printer.ScaleLeft
        Printer.CurrentY = Printer.CurrentY + 1
        Printer.Line -((Printer.ScaleLeft + Printer.ScaleWidth - pageleft), Printer.CurrentY)
        
        Printer.CurrentY = Printer.CurrentY + 1
        
        For i = 0 To 10
        '判断是否该页已打满
        Me.MSFlexGrid1.Row = i
        If Printer.CurrentY >= useheight Then    '打印横线
           Printer.CurrentX = Printer.ScaleLeft + pageleft
           Printer.Line -((Printer.ScaleLeft + Printer.ScaleWidth - pageleft), Printer.CurrentY)
           Printer.CurrentY = Printer.CurrentY + 1
        
         
            '打印四条竖线
            endline = Printer.CurrentY
            Printer.Line (0, startline)-(0, endline)
            Printer.Line (usewidth / 3, startline)-(usewidth / 3, endline)
            Printer.Line ((usewidth / 3) * 2, startline)-((usewidth / 3) * 2, endline)
            Printer.Line (usewidth, startline)-(usewidth, endline)
            
           '打印页号
            Printer.CurrentX = (Printer.ScaleWidth - Printer.TextWidth(Printer.Page)) / 3 - pageleft
            Printer.CurrentY = useheight + 3
            Printer.Print Printer.Page
            Printer.NewPage  'NewPage告诉打印机,程序对当前输出页的发送已经结束。Printer对象应开始新的一页。
           
            Printer.CurrentX = pageleft + Printer.ScaleLeft
            Printer.CurrentY = pageheader + Printer.ScaleTop
            startline = Printer.CurrentY
           
       Else
        '打印一行数据
        Me.MSFlexGrid1.Col = 0
        Printer.CurrentX = ((Printer.ScaleWidth - 40) / 3 - Printer.TextWidth(Me.MSFlexGrid1.Text)) / 8
        starty = Printer.CurrentY
        Printer.Print Me.MSFlexGrid1.Text
        
        Me.MSFlexGrid1.Col = 1
        Printer.CurrentX = (Printer.ScaleWidth - 40) / 3 + ((Printer.ScaleWidth - 40) / 3 - Printer.TextWidth(Me.MSFlexGrid1.Text)) / 2
        Printer.CurrentY = starty
        Printer.Print Me.MSFlexGrid1.Text
        
        Me.MSFlexGrid1.Col = 2
        Printer.CurrentX = ((Printer.ScaleWidth - 40) / 3) * 2 + ((Printer.ScaleWidth - 40) / 3 - Printer.TextWidth(Me.MSFlexGrid1.Text)) / 2
        Printer.CurrentY = starty
        Printer.Print Me.MSFlexGrid1.Text
        
        Printer.CurrentX = pageleft + Printer.ScaleLeft
        Printer.CurrentY = Printer.CurrentY + 1
        Printer.Line -((Printer.ScaleLeft + Printer.ScaleWidth - pageleft), Printer.CurrentY)
        
        Printer.CurrentY = Printer.CurrentY + 1
      End If
    Next i
           '打印最后一条横线
        Printer.CurrentX = Printer.ScaleLeft + pageleft
        Printer.Line -((Printer.ScaleLeft + Printer.ScaleWidth - pageleft), Printer.CurrentY)
        endline = Printer.CurrentY
        '打印四条竖线
        Printer.Line (0, startline)-(0, endline)
        Printer.Line (usewidth / 3, startline)-(usewidth / 3, endline)
        Printer.Line ((usewidth / 3) * 2, startline)-((usewidth / 3) * 2, endline)
        Printer.Line (usewidth, startline)-(usewidth, endline)
       
     
            '打印页号
          
        Printer.CurrentX = (Printer.ScaleWidth - Printer.TextWidth(Printer.Page)) / 3 - pageleft
        Printer.CurrentY = useheight + 3
        'Printer.Print Printer.Page
        Printer.Print "    哈尔滨高新技术开发区"
        Printer.EndDoc  'EndDoc告诉VISUAL BASIC,程序创建文档结束。VISUAL BASIC应将它发送到物理打印机上打印。
      If Err.Number = 0 Then
         MsgBox "you are successful!", , ""
      End If
    End Sub