我做了一个datagrid数据网格。现想把这个网格中的数据打印出来请问大哥大姐们怎样实现?谢谢
注:datagrid网格数据有四十多条。全部打印出来。请回复源代码。

解决方案 »

  1.   

    用报表控件,邮件联系[email protected]
      

  2.   

    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 - 20
        useheight = Printer.ScaleHeight - 30
        Printer.CurrentX = 0
        Printer.CurrentY = 0
        Printer.DrawWidth = 2
        
        '打印主标题
        Printer.FontSize = 20
        Printer.CurrentX = (usewidth - Printer.TextWidth("")) / 2
        Printer.CurrentY = Printer.ScaleTop
        Printer.Print ""
        
        '打印空白行
        Printer.FontSize = 10
        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.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 45
        '判断是否该页已打满
        Me.MSFGKL.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
                
           '打印页号
            Printer.CurrentX = (Printer.ScaleWidth - Printer.TextWidth(Printer.Page)) / 3 - pageleft
            Printer.CurrentY = useheight + 3
            Printer.Print Printer.Page
            Printer.NewPage
           
            Printer.CurrentX = pageleft + Printer.ScaleLeft
            Printer.CurrentY = pageheader + Printer.ScaleTop
            startline = Printer.CurrentY
           
       Else
        '打印一行数据
        Me.MSFGKL.Col = 0
        Printer.CurrentX = ((Printer.ScaleWidth - 80) / 8 - Printer.TextWidth(Me.MSFGKL.Text)) / 8
        starty = Printer.CurrentY
        Printer.Print Me.MSFGKL.Text
        
        Me.MSFGKL.Col = 1
        Printer.CurrentX = (Printer.ScaleWidth - 80) / 8 + ((Printer.ScaleWidth - 80) / 8 - Printer.TextWidth(Me.MSFGKL.Text)) / 8
        Printer.CurrentY = starty
        Printer.Print Me.MSFGKL.Text
        
        Me.MSFGKL.Col = 2
        Printer.CurrentX = ((Printer.ScaleWidth - 90) / 8) * 2 + ((Printer.ScaleWidth - 90) / 8 - Printer.TextWidth(Me.MSFGKL.Text)) / 8
        Printer.CurrentY = starty
        Printer.Print Me.MSFGKL.Text
        
        Me.MSFGKL.Col = 3
        Printer.CurrentX = ((Printer.ScaleWidth - 70) / 8) * 3 + ((Printer.ScaleWidth - 70) / 8 - Printer.TextWidth(Me.MSFGKL.Text)) / 8
        Printer.CurrentY = starty
        Printer.Print Me.MSFGKL.Text & "   "
        
        Me.MSFGKL.Col = 4
        Printer.CurrentX = ((Printer.ScaleWidth - 60) / 8) * 4 + ((Printer.ScaleWidth - 60) / 8 - Printer.TextWidth(Me.MSFGKL.Text)) / 8
        Printer.CurrentY = starty
        Printer.Print Me.MSFGKL.Text & "   "
        
        Me.MSFGKL.Col = 5
        Printer.CurrentX = ((Printer.ScaleWidth - 40) / 8) * 5 + ((Printer.ScaleWidth - 40) / 8 - Printer.TextWidth(Me.MSFGKL.Text)) / 8
        Printer.CurrentY = starty
        Printer.Print Me.MSFGKL.Text
        
        Me.MSFGKL.Col = 6
        Printer.CurrentX = ((Printer.ScaleWidth - 40) / 8) * 6 + ((Printer.ScaleWidth - 40) / 8 - Printer.TextWidth(Me.MSFGKL.Text)) / 8
        Printer.CurrentY = starty
        Printer.Print Me.MSFGKL.Text
        
        Me.MSFGKL.Col = 7
        Printer.CurrentX = ((Printer.ScaleWidth - 80) / 8) * 7 + ((Printer.ScaleWidth - 80) / 7 - Printer.TextWidth(Me.MSFGKL.Text)) / 8
        Printer.CurrentY = starty
        Printer.Print Me.MSFGKL.Text    Me.MSFGKL.Col = 8
        Printer.CurrentX = ((Printer.ScaleWidth - 80) / 8) * 8 + ((Printer.ScaleWidth - 80) / 8 - Printer.TextWidth(Me.MSFGKL.Text)) / 8
        Printer.CurrentY = starty
        Printer.Print Me.MSFGKL.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.CurrentX = (Printer.ScaleWidth - Printer.TextWidth(Printer.Page)) / 8 - pageleft
       Printer.Print txtGuestNum.Text & "           " & txtPageNum.Text & "           " & txtOperator.Text & "   " & Date
       Printer.EndDoc  If err.Number = 0 Then
         MsgBox "打印中……!请稍后。。", , ""
      End If