!type e:\csy\csy.prn >prn

解决方案 »

  1.   

    copy 的外部命令不能铐贝到打印机 
      

  2.   

    !copy e:\csy\csy.prn prn /b
      

  3.   

    我们这里都是先用程序在excel里生成报表。再打印excel.代码如下:
    程序名:toexcel.prg
    para tablenameset esca onwait "按esc键取消!" window AT 20,30 timeout 1
    HB1=createobject("EXCEL.APPLICATION")
    HB1.application.visible=.t.
    HB1.workbooks.add
    HB1.SHEETS("SHEET1").selectsele (tablename)
    hbdygs="A1:"+chr(fcount()+64)+"2"HB1.range(hbdygs).selectHB1.selection.HorizontalAlignment = 3  &&水平方向 2左对齐,3居中,4右对齐
    HB1.selection.VerticalAlignment = 2    &&垂直方向 1靠上,2居中,3靠下
    HB1.selection.WrapText = .f.          && ??
    HB1.selection.orientation = 0          && ??
    HB1.selection.AddIndent = .f.         && ??
    HB1.selection.ShrinkToFit = .f.        && ??
    HB1.selection.MergeCells = .t.        && ??
    HB1.ActiveCell.FormulaR1C1 = "请输入报表标题"
    HB1.ActiveCell.Characters.font.name = "隶书"
    HB1.ActiveCell.Characters.font.FontStyle = "常规"
    HB1.ActiveCell.Characters.font.ColorIndex = 1 &&字符颜色
    for i=66 to fcount()+65
       columnname=chr(i-1)+"3"
       activecellname=columnname
       cvalue=allt(field(i-65))
        if vartype(&cvalue)="C"
    select max(len(alltrim(&cvalue))) from (tablename) into array awidth
    mx=awidth
    hb1.range(activecellname+":"+activecellname).columnwidth=mx*1.5
    else
    if vartype(&cvalue)$"NYFI"
    select max(len(alltrim(str(&cvalue,12,2)))) from (tablename) into array awidth
    mx=awidth
            hb1.range(activecellname).columnwidth=mx*1.5
         endif
    endif
       HB1.range(activecellname).FormulaR1C1=cvalueendforj=4
    go top
    do while not eof()
      for s=66 to fcount()+65
          columnname=chr(s-1)+allt(str(j))
          activecellname=columnname
          cvalue=allt(field(s-65))
       
          if vartype(&cvalue)="C"
    HB1.range(activecellname).FormulaR1C1="'"+allt(&cvalue)
    else
    if vartype(&cvalue)$"NYFI"
          HB1.range(activecellname).FormulaR1C1=&cvalue
    endif
    endif
      endfor
          skip 
          j=j+1                 
    enddo          
    *    HB1.ACTIVEWORKBOOK.SAVE      &&自动保存数据
    *    HB1.ACTIVEWORKBOOK.CLOSE    &&关闭当前工作簿
    *    HB1.QUIT     使用方法打印按钮里do toexcel with 'tablename'
    把参数中tablename转换成你要打印的表.你可以换成你想要打印的表名