Printer.Orientation = 1
Printer.PaperSize = 9
Printer.FontSize = 16
Printer.ScaleMode = 6
Printer.CurrentX = 30
Printer.CurrentY = 16
Printer.Print "      资 产 负 债 表    "
Printer.FontSize = 9
Printer.FontName = "宋体"
Printer.CurrentX = 15
Printer.CurrentX = 90
Printer.Print " 报表日期:  " & gyear & " 年  " & gmonth & " 月   单位:" & gdwmc
Printer.CurrentX = 6
Printer.Print "┌────────────┬─┬──────┬──────┬──────────────┬─┬──────┬──────┐"
Printer.CurrentX = 6
Printer.Print "│        资    产        │行│   期未数   │   年初数   │      负债和所有者权益      │行│   期未数   │   年初数   │"
Printer.CurrentX = 6
Printer.Print "├────────────┼─┼──────┼──────┼──────────────┼─┼──────┼──────┤"
Printer.EndDoc
Printer.KillDoc
表头打印出来总对不齐?为什么

解决方案 »

  1.   

    我用CommonDialog打印控件为什么改不了打印数量??
      

  2.   

    由于两个半角空格的宽度并不等于一个汉字的宽度,所以你对不齐就是正常的了。
    MsgBox Printer.TextWidth("  ") - Printer.TextWidth("─") '约差0.0353毫米'全角空格添充表格线内容
    '重新定位表头文字
    Private Sub Command1_Click()
        Printer.Orientation = 1
        Printer.PaperSize = 9
        Printer.FontSize = 16
        Printer.ScaleMode = 6
        Printer.CurrentX = 30
        Printer.CurrentY = 16
        Printer.Print "      资 产 负 债 表    "
        Printer.FontSize = 9
        Printer.FontName = "宋体"
        Printer.CurrentX = 15
        Printer.CurrentX = 90
        Printer.Print " 报表日期:  " & gyear & " 年  " & gmonth & " 月  单位:" & gdwmc
        Printer.CurrentX = 6
        Printer.Print "┌────────────┬─┬──────┬──────┬──────────────┬─┬──────┬──────┐"
        Printer.CurrentX = 6
        Printer.Print "│            │ │      │      │              │ │      │      │"
        Printer.CurrentY = 27.9
        Printer.CurrentX = 6 + Printer.TextWidth("─") * 5
        Printer.Print "资  产";
        Printer.CurrentX = Printer.CurrentX + Printer.TextWidth("─") * 5
        Printer.Print "行";
        Printer.CurrentX = Printer.CurrentX + Printer.TextWidth("─") * 2.5
        Printer.Print "期未数";
        Printer.CurrentX = Printer.CurrentX + Printer.TextWidth("─") * 4
        Printer.Print "年初数";
        Printer.CurrentX = Printer.CurrentX + Printer.TextWidth("─") * 5.5
        Printer.Print "负债和所有者权益";
        Printer.CurrentX = Printer.CurrentX + Printer.TextWidth("─") * 4
        Printer.Print "行";
        Printer.CurrentX = Printer.CurrentX + Printer.TextWidth("─") * 2.5
        Printer.Print "期未数";
        Printer.CurrentX = Printer.CurrentX + Printer.TextWidth("─") * 4
        Printer.Print "年初数"
        
        Printer.CurrentX = 6
        Printer.Print "├────────────┼─┼──────┼──────┼──────────────┼─┼──────┼──────┤"
        Printer.EndDoc
        Printer.KillDoc
        '表头打印出来总对不齐?为什么
    End Sub
      

  3.   

    给你一个概念, 将表格与内容全部画在 PictureBox 当做预览画面, 要打印时再Printer.PaintPicture下图白色背景部份就是PictureBox,要打印时再点击左上角那台打印机Sub ShowTitle()
       Picture2.Cls
       Picture2.FontSize = 9
       Picture2.Print
       Picture2.FontSize = 18
       Picture2.FontBold = True
       Picture2.Font = "楷体_GB2312"
       AA = "产品资料明细一览表"
       Picture2.CurrentX = (Picture2.Width - Picture2.TextWidth(AA)) \ 2 '注意这行的居中
       Picture2.Print AA
       Picture2.FontBold = False
       Picture2.FontSize = 12
       Picture2.Print
       Picture2.CurrentY = Picture2.CurrentY - 100
       Picture2.Font = "新宋体"
       AA = "制表日期: " & Format(Date, "mm/dd/yyyy") & Space(3) & "时间: " & Time$
       Picture2.CurrentX = (Picture2.Width - Picture2.TextWidth(AA)) \ 2
       Picture2.Print AA & Space(8) & "页次: " & CStr(PageNo) & " / " & CStr(Tpage)