| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2412 人关注过本帖
标题:以前的大大用VFP6.0做了个生成excel工资对帐单的程序,但是现在这个程序不能 ...
只看楼主 加入收藏
myh7999
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2017-10-13
结帖率:0
收藏
已结贴  问题点数:20 回复次数:11 
以前的大大用VFP6.0做了个生成excel工资对帐单的程序,但是现在这个程序不能批量生成文件了,每次只会生成多选的第一项。求大大看看。
IF THISFORM.OPTIONGROUP1.VALUE=1 AND THISFORM.OPTIONGROUP2.VALUE=1
   SELE HXK   
   SET FILTER TO
   SET ORDER TO XH1
   repl all CHK with ' '
   for ncnt=1 to thisform.list1.listcount
       if thisform.list1.selected(ncnt)
          repl chk with '1' for GD=SUBS(alltrim(thisform.list1.list(ncnt)),1,10) AND GDBM=SUBS(alltrim(thisform.list1.list(ncnt)),13,10) AND GD<>'退休'
       endif
   endfor
   SET FILTER TO CHK='1'
   GO TOP
   CCNT=1000
DO WHILE .NOT. EOF()

   M_XM=XM
   M_ZGH=ZGH
   M_GD=ALLTRIM(GD)
   M_GDBM=ALLTRIM(GDBM)
   M_BM=IIF(M_GD=M_GDBM,M_GD,M_GD+M_GDBM)
   M_WJ=ALLTRIM(XM)+STR(MY,4)+IIF(MM<10,'0'+STR(MM,1),STR(MM,2))+'.xls'
   SELE JJK
   APPE FROM \LZGL\DBF\JJ\ZGJJ FOR XM=M_XM AND FFRQ>=FFRQ1 AND FFRQ<=FFRQ2 and !dele() and gzyn=1
   REPL ALL ZGBH WITH CCNT FOR XM=M_XM
   LOCA FOR XM=M_XM
   *若无奖金记录,则增加一条空记录
   IF EOF()
      APPE BLANK
      REPL XM WITH M_XM,ZGBH WITH CCNT  
   ENDIF
   SELE GZK
   LOCA FOR XM=M_XM
   *若无工资记录,则增加一条空记录
   IF EOF()
      APPE BLANK
      REPL XM WITH M_XM,ZGBH WITH CCNT  
   ENDIF
   M_YFGZ=YFGZ
   M_SFGZ=SFGZ
   *每个项目在\LZGL\TMP下建一子目录
*   IF !Directory("\LZGL\TMP\&M_GD")
*      MD \LZGL\TMP\&M_GD
*   ENDIF
   *每个部门在项目下建一子目录  
*   IF !Directory("\LZGL\TMP\&M_GD.\&M_GDBM")
*      MD \LZGL\TMP\&M_GD.\&M_GDBM
*   ENDIF

   *删除老文件
   IF FILE("\LZGL\工资对帐单\&M_WJ")
      ERAS \LZGL\工资对帐单\&M_WJ
   ENDIF
   
   *生成EXCEL表
   ef=CREATEOBJECT('Excel.application')  &&调用Excel程序
   ef.Workbooks.add   &&添加工作簿
   ef.Worksheets("sheet1").Activate   &&激活第一个工作表
   ef.visible=.F.  &&显示Excel界面
   ef.ActiveSheet.PageSetup.Orientation=2       &&纸张方向 1-纵向,2-横向
   ef.ActiveWindow.DisplayZeros=.F.
   ef.ActiveSheet.PageSetup.TopMargin=1.8/0.035  &&设置距顶1.8厘米
   ef.range("A1:M30").Select  
   ef.Selection.Font.Size = 9   &&设置整表默认字体大小为10
   ef.Selection.HorizontalAlignment = 3  &&居中对齐
*   num=reccount()   &&求导出总记录数
*   i=5
   ef.range("A:B").ColumnWidth=3.88
   ef.range("C:L").ColumnWidth=8.13
   ef.range("M1").ColumnWidth=18.50   
   ef.range("a1:a30").RowHeight=20   &&设置行高
   ef.range("A1:M1").Select  &&选择标题栏所在单元格
   ef.Selection.Merge   &&合并单元格
   with ef.range("A1")    &&设置标题及字体属性
          .value='工资对帐单'
          .Font.Name="黑体"
          .Font.size=16
   endwith
   ef.Rows(1).RowHeight=25   &&设置第一行高度为
   
   ef.range("A2:M2").Select  &&选择标题栏所在单元格
   ef.Selection.Merge   &&合并单元格
   with ef.range("A2")    &&设置标题及字体属性
          .value="("+DTOC(FFRQ1)+"——"+DTOC(FFRQ2)+")"
          .Font.Name="黑体"
          .Font.size=10
   endwith
   ef.Rows(2).RowHeight=25
   *ef.Rows(2).RowHeight=1/0.035  &&设置第二行高度为1cm
   ef.Rows(3).RowHeight=8

   ef.range("A4:B4").Select  &&选择标题栏所在单元格
   ef.Selection.Merge   &&合并单元格

   ef.range("C4:E4").Select  &&选择标题栏所在单元格
   ef.Selection.Merge   &&合并单元格

   ef.range("G4:H4").Select  &&选择标题栏所在单元格
   ef.Selection.Merge   &&合并单元格

   ef.range("J4:K4").Select  &&选择标题栏所在单元格
   ef.Selection.Merge   &&合并单元格

   ef.range("A4").value="部  门:"
   ef.range("a4,F4,I4").HorizontalAlignment=2
   ef.range("F4").value="职工号:"
*   ef.range("f4").HorizontalAlignment=1
   ef.range("I4").value="姓  名:"
*   ef.range("i4").HorizontalAlignment=1

   ef.range("C4").value=M_BM
   ef.range("G4").value=M_ZGH
   ef.range("J4").value=M_XM
   ef.range("C4,J4").HorizontalAlignment=1
   ef.range("G4").HorizontalAlignment=2
   ef.range("C4,G4,J4").Font.Name="黑体"
   ef.range("C4,G4,J4").Font.size=12

   ef.Rows(5).RowHeight=8

   ef.range("a6:d6").Select  &&选择标题栏所在单元格
   ef.Selection.Merge   &&合并单元格
   ef.range("a6").HorizontalAlignment=1
   ef.range("A6").VALUE="1、工资(银行代付)"

   ef.range("I6").VALUE="支付日期:"
   ef.range("I6").HorizontalAlignment=1   
   ef.range("J6:K6").Select  &&选择标题栏所在单元格
   ef.Selection.Merge   &&合并单元格
   if ffrq<>{//}
      ef.range("J6").VALUE=FFRQ
   endif
   ef.range("J6").HorizontalAlignment=2
   
   ef.range("A7:K7").Select
   ef.Selection.Merge  
   ef.range("A7").VALUE="工          成"
   
   ef.range("A8:B8").Select
   ef.Selection.Merge  
   ef.range("A8").VALUE="岗级"
   ef.range("C8").VALUE=GWGZGJ

   *ef.range("A9:B9").Select
   *ef.Selection.Merge  
   *ef.range("A9").VALUE="房贴"
   *ef.range("C9").VALUE=FT
   
   *ef.range("A10:B10").Select
   *ef.Selection.Merge  
   *ef.range("A10").VALUE="通讯费"
   *ef.range("C10").VALUE=TXF

   ef.range("D8").VALUE="薪级"
   ef.range("E8").VALUE=GWGZXJ

   ef.range("A9:B9").Select
   ef.Selection.Merge
   ef.range("A9").VALUE="补贴"
   ef.range("C9").VALUE=BT
   
   ef.range("H9").VALUE="补发"
   ef.range("I9").VALUE=BF

  * ef.range("D10").VALUE="午餐补贴"
   *ef.range("E10").VALUE=WCBT

   ef.range("F8").VALUE="岗薪工资"
   ef.range("G8").VALUE=GXGZ

   ef.range("F9").VALUE="月奖"
   ef.range("G9").VALUE=YUEJ

   *ef.range("F10").VALUE="施工津贴"
   *ef.range("G10").VALUE=SGJT


   ef.range("H8").VALUE="工龄工资"
   ef.range("I8").VALUE=GLGZ

   ef.range("J8").VALUE="加班工资"
   ef.range("K8").VALUE=JBGZ

   *ef.range("F10").VALUE="通讯费"
   *ef.range("G10").VALUE=TXF   
   
   ef.range("D9").VALUE="预发"
   ef.range("E9").VALUE=yf
   

   *ef.range("J8").VALUE="工地津贴"
   *ef.range("K8").VALUE=GDJT

   ef.range("J9").VALUE="病事假"
   ef.range("K9").VALUE=BSJ

   ef.range("J10").VALUE="应发工资"
   ef.range("K10").VALUE=YFGZ
   ef.range("K10").Interior.ColorIndex = 15
   
   ef.range("A11:K11").Select
   ef.Selection.Merge  
   ef.range("A11").VALUE="代          目"
   
   ef.range("A12:B12").Select
   ef.Selection.Merge  
   ef.range("A12").VALUE="公积金"
   ef.range("C12").VALUE=GJJ
      
   ef.range("A13:B13").Select
   ef.Selection.Merge  
   ef.range("A13").VALUE="大病医疗"
   ef.range("C13").VALUE=DBYL

   ef.range("D12").VALUE="养老保险"
   ef.range("E12").VALUE=JBBX

   ef.range("D13").VALUE="个人调节税"
   ef.range("E13").VALUE=GRTJS

   ef.range("F12").VALUE="企业年金"
   ef.range("G12").VALUE=BCBX

   ef.range("F13").VALUE="其他扣款"
   ef.range("G13").VALUE=KKX

   ef.range("H12").VALUE="失业保险"
   ef.range("I12").VALUE=SYBX

   *ef.range("H13").VALUE="房租费"
   *ef.range("I13").VALUE=FZF

   ef.range("J12").VALUE="医疗保险"
   ef.range("K12").VALUE=YLBX

   ef.range("J13").VALUE="实发工资"
   ef.range("K13").VALUE=SFGZ      
   ef.range("K13").Interior.ColorIndex = 15

   ef.range("A14:B14").Select
   ef.Selection.Merge  
   ef.range("A14").VALUE="工资说明:"
   ef.range("A14").HorizontalAlignment=1
 
   ef.range("C14:K14").Select
   ef.Selection.Merge  
   ef.range("C14").VALUE=ALLTRIM(SM)
   ef.range("C14").HorizontalAlignment=1

   
   *给以上数据栏设为右对齐,保留2位小数
   ef.range("C8:C10,C12:C13,E8:E10,E12:E13,G8:G10,G12:G13,I8:I10,I12:I13,K8:K10,K12:K13").NumberFormatLocal = "0.00"
   ef.range("C8:C10,C12:C13,E8:E10,E12:E13,G8:G10,G12:G13,I8:I10,I12:I13,K8:K10,K12:K13").HorizontalAlignment=4
   
   ef.Range("a7:k14").Borders.LineStyle=1

   *以下是奖金部分
   SELE JJK
   SET FILTER TO XM=M_XM
   SUM JJHJ,DKSL,SFSL TO M_JJHJ,M_DKSL,M_SFSL
   COUNT TO M_TJBS
   ef.range("a15:d15").select
   ef.selection.Merge
   ef.range("A15").VALUE="2、奖金、津补贴及其他"
   ef.range("A15").HorizontalAlignment=1   
   ef.RANGE("A15").RowHeight=0.6/0.035

   ef.range("A16").VALUE="序号"
  
   ef.range("B16:d16").select
   ef.selection.Merge
   ef.range("B16").VALUE="发 放 名 称"
   ef.range("E16").VALUE="发放日期"
   ef.range("F16").VALUE="金额1"
   ef.range("G16").VALUE="金额2"
   ef.range("H16").VALUE="扣款"
   ef.range("I16").VALUE="应发数"
   ef.range("J16").VALUE="代扣数"
   ef.range("K16").VALUE="实发数"
   ef.range("L16").VALUE="支付方式"
   ef.range("M16").VALUE="备注"

   *数据栏设为右对齐,保留2位小数
   M_CELL="K"+STR(M_TJBS+19,2)
   ef.range("F17:&M_CELL").NumberFormatLocal = "0.00"
   ef.range("F17:&M_CELL").HorizontalAlignment=4
   *日期栏
   M_CELL="E"+STR(M_TJBS+17,2)
   ef.range("E17:&M_CELL").NumberFormatLocal = "YYYY-M-D"
   *发放名称,备注栏设为左对齐
   M_CELL="B"+STR(M_TJBS+17,2)
   ef.range("B17:&M_CELL").HorizontalAlignment=1
   M_CELL="M"+STR(M_TJBS+17,2)
   ef.range("M17:&M_CELL").HorizontalAlignment=1
   GO TOP
   M_CNT=1
   I=17
   DO WHILE .NOT. EOF()
      M_CELL1="B"+STR(I,2)
      M_CELL2="D"+STR(I,2)
      ef.range("&M_CELL1:&M_CELL2").select
      ef.selection.Merge
      ef.cells[I,1].value = M_CNT
      ef.cells[I,2].value = JJMC
      IF FFRQ<>{//}
         ef.cells[I,5].value = FFRQ
      ENDIF
      ef.cells[I,6].value = JJSL
      ef.cells[I,7].value = JJSL1
      ef.cells[I,8].value = KJSL
      ef.cells[I,9].value = JJHJ
      ef.cells[I,10].value = DKSL
      ef.cells[I,11].value = SFSL
      IF empty(zh)
         ef.cells[I,12].value ="现金支付"
      ELSE
         ef.cells[I,12].value ="银行代付"
      ENDIF
      ef.cells[I,13].value =ALLTRIM(SM)
      M_CNT=M_CNT+1
      I=I+1
      SKIP
   ENDDO
   M_CELL1="A"+STR(I,2)
   M_CELL2="E"+STR(I,2)
   ef.range("&M_CELL1:&M_CELL2").select
   ef.selection.Merge
   ef.range("&M_CELL1").VALUE="本期奖金、津补贴等小计"
   ef.range("&M_CELL1").Font.Name="黑体"
   
   ef.cells[I,9].value = M_JJHJ
   ef.cells[I,9].Interior.ColorIndex = 15
   ef.cells[I,10].value = M_DKSL
   ef.cells[I,10].Interior.ColorIndex = 15
   ef.cells[I,11].value = M_SFSL
   ef.cells[I,11].Interior.ColorIndex = 15
 
   M_CELL1="M"+STR(I,2)

   ef.Range("a16:&M_CELL1").Borders.LineStyle=1
   
   *结尾部分
   ef.Rows(i+1).RowHeight=0.4/0.035
   I=I+2
   M_CELL1="A"+STR(I,2)
   M_CELL2="E"+STR(I,2)
   ef.range("&M_CELL1:&M_CELL2").select
   ef.selection.Merge
   ef.range("&M_CELL1").VALUE="本期总计(包括工资):"
   ef.range("&M_CELL1").Font.Name="黑体"
   
   ef.cells[I,9].value = M_JJHJ+M_YFGZ
   ef.cells[I,9].Interior.ColorIndex = 15
   ef.cells[I,10].value = M_DKSL+(M_YFGZ-M_SFGZ)
   ef.cells[I,10].Interior.ColorIndex = 15
   ef.cells[I,11].value = M_SFSL+M_SFGZ
   ef.cells[I,11].Interior.ColorIndex = 15
 
   M_CELL1="A"+STR(I,2)
   M_CELL2="K"+STR(I,2)
   ef.Range("&M_CELL1:&M_CELL2").Borders.LineStyle=1
   
   *加入另外通知说明信息
   IF !EMPTY(THISFORM.EDIT1.VALUE)
      I=I+1
      ef.Rows(i).RowHeight=1/0.035
      M_CELL1="A"+STR(I,2)
      M_CELL2="M"+STR(I,2)
      ef.range("&M_CELL1:&M_CELL2").select
      ef.selection.Merge
      ef.range("&M_CELL1").VALUE="注:"+ALLTRIM(THISFORM.EDIT1.VALUE)
      ef.range("&M_CELL1").HorizontalAlignment=1
      ef.range("&M_CELL1").Font.Bold=.t.  
*      ef.range("&M_CELL1").wordwrap=.t.  &&折行
   ENDIF

   ef.range("A6,A7,A11,A15").Font.Name="黑体"
   ef.cells[I,9].Font.Bold=.t.  
   ef.cells[I,10].Font.Bold=.t.
   ef.cells[I,11].Font.Bold=.t.
   
   ef.ActiveWorkbook.SaveAs("&默认驱动器.\LZGL\工资对帐单\&M_WJ")
   ef.Workbooks.close
   ef.quit
   SELE HXK
   SKIP
ENDDO
   
   =MESSAGEBOX('已完成',64)
   SELE GZK
   USE
   SELE HXK
ENDIF




*在职\按姓名打印
IF THISFORM.OPTIONGROUP1.VALUE=1 AND THISFORM.OPTIONGROUP2.VALUE=2
   SELE HXK   
   SET FILTER TO
   SET ORDER TO XH1
   repl all CHK with ' '
   for ncnt=1 to thisform.list1.listcount
       if thisform.list1.selected(ncnt)
          repl chk with '1' for XM=alltrim(thisform.list1.list(ncnt)) AND GD<>'退休'
       endif
   endfor
   SET FILTER TO CHK='1'
   
   
   
   GO TOP
   ccnt=1000

   M_XM=XM
   M_ZGH=ZGH
   M_GD=ALLTRIM(GD)
   M_GDBM=ALLTRIM(GDBM)
   M_BM=IIF(M_GD=M_GDBM,M_GD,M_GD+M_GDBM)
   M_WJ=ALLTRIM(XM)+STR(MY,4)+IIF(MM<10,'0'+STR(MM,1),STR(MM,2))+''
   SELE JJK
   APPE FROM \LZGL\DBF\JJ\ZGJJ FOR XM=M_XM AND FFRQ>=FFRQ1 AND FFRQ<=FFRQ2 and !dele()
   REPL ALL ZGBH WITH CCNT FOR XM=M_XM
   LOCA FOR XM=M_XM
   *若无奖金记录,则增加一条空记录
   IF EOF()
      APPE BLANK
      REPL XM WITH M_XM,ZGBH WITH CCNT  
   ENDIF
   SELE GZK
   LOCA FOR XM=M_XM
   *若无工资记录,则增加一条空记录
   IF EOF()
      APPE BLANK
      REPL XM WITH M_XM,ZGBH WITH CCNT  
   ENDIF
   M_YFGZ=YFGZ
   M_SFGZ=SFGZ
   *每个项目在\LZGL\TMP下建一子目录
*   IF !Directory("\LZGL\TMP\&M_GD")
*      MD \LZGL\TMP\&M_GD
*   ENDIF
   *每个部门在项目下建一子目录  
*   IF !Directory("\LZGL\TMP\&M_GD.\&M_GDBM")
*      MD \LZGL\TMP\&M_GD.\&M_GDBM
*   ENDIF
   *删除老文件
*   IF FILE("\LZGL\TMP\&M_GD.\&M_GDBM.\&M_WJ")
*      ERAS \LZGL\TMP\&M_GD.\&M_GDBM.\&M_WJ
*   ENDIF

   IF FILE("\LZGL\工资对帐单\&M_WJ")
      ERAS \LZGL\工资对帐单\&M_WJ
   ENDIF


   
   *生成EXCEL表
   ef=CREATEOBJECT('Excel.application')  &&调用Excel程序
   ef.Workbooks.add   &&添加工作簿
   ef.Worksheets("sheet1").Activate   &&激活第一个工作表
   ef.ActiveSheet.PageSetup.Orientation=2       &&纸张方向 1-纵向,2-横向
   ef.visible=.F.  &&显示Excel界面
   ef.ActiveSheet.PageSetup.TopMargin=1.8/0.035  &&设置距顶1.8厘米
   ef.ActiveWindow.DisplayZeros=.F.
   ef.range("A1:M30").Select  
   ef.Selection.Font.Size = 9   &&设置整表默认字体大小为10
   ef.Selection.HorizontalAlignment = 3  &&居中对齐
*   num=reccount()   &&求导出总记录数
*   i=5
   ef.range("A:B").ColumnWidth=3.88
   ef.range("C:L").ColumnWidth=8.13
   ef.range("M1").ColumnWidth=18.50   
   ef.range("a1:a30").RowHeight=20   &&设置行高
   ef.range("A1:M1").Select  &&选择标题栏所在单元格
   ef.Selection.Merge   &&合并单元格
   with ef.range("A1")    &&设置标题及字体属性
          .value='工资对帐单'
          .Font.Name="黑体"
          .Font.size=18
   endwith
   ef.Rows(1).RowHeight=25   &&设置第一行高度为
   
   ef.range("A2:M2").Select  &&选择标题栏所在单元格
   ef.Selection.Merge   &&合并单元格
   with ef.range("A2")    &&设置标题及字体属性
          .value="("+DTOC(FFRQ1)+"——"+DTOC(FFRQ2)+")"
          .Font.Name="黑体"
          .Font.size=10
   endwith
   ef.Rows(2).RowHeight=25
   *ef.Rows(2).RowHeight=1/0.035  &&设置第二行高度为1cm
   ef.Rows(3).RowHeight=8

   ef.range("A4:B4").Select  &&选择标题栏所在单元格
   ef.Selection.Merge   &&合并单元格

   ef.range("C4:E4").Select  &&选择标题栏所在单元格
   ef.Selection.Merge   &&合并单元格

   ef.range("G4:H4").Select  &&选择标题栏所在单元格
   ef.Selection.Merge   &&合并单元格

   ef.range("J4:K4").Select  &&选择标题栏所在单元格
   ef.Selection.Merge   &&合并单元格

   ef.range("A4").value="部  门:"
   ef.range("a4,F4,I4").HorizontalAlignment=2
   ef.range("F4").value="职工号:"
*   ef.range("f4").HorizontalAlignment=1
   ef.range("I4").value="姓  名:"
*   ef.range("i4").HorizontalAlignment=1

   ef.range("C4").value=M_BM
   ef.range("G4").value=M_ZGH
   ef.range("J4").value=M_XM
   ef.range("C4,J4").HorizontalAlignment=1
   ef.range("G4").HorizontalAlignment=2
   ef.range("C4,G4,J4").Font.Name="黑体"
   ef.range("C4,G4,J4").Font.size=12

   ef.Rows(5).RowHeight=8

   ef.range("a6:d6").Select  &&选择标题栏所在单元格
   ef.Selection.Merge   &&合并单元格
   ef.range("a6").HorizontalAlignment=1
   ef.range("A6").VALUE="1、工资(银行代付)"
   ef.range("I6").VALUE="支付日期:"
   ef.range("I6").HorizontalAlignment=1   
   ef.range("J6:K6").Select  &&选择标题栏所在单元格
   ef.Selection.Merge   &&合并单元格
   if ffrq<>{//}
      ef.range("J6").VALUE=FFRQ
   endif
   ef.range("J6").HorizontalAlignment=2
   
   ef.range("A7:K7").Select
   ef.Selection.Merge  
   ef.range("A7").VALUE="工          成"
  
   ef.range("A8:B8").Select
   ef.Selection.Merge  
   ef.range("A8").VALUE="岗级"
   ef.range("C8").VALUE=GWGZGJ

   *ef.range("A9:B9").Select
   *ef.Selection.Merge  
   *ef.range("A9").VALUE="房贴"
   *ef.range("C9").VALUE=FT
   
   *ef.range("A10:B10").Select
   *ef.Selection.Merge  
   *ef.range("A10").VALUE="通讯费"
   *ef.range("C10").VALUE=TXF

   ef.range("D8").VALUE="薪级"
   ef.range("E8").VALUE=GWGZXJ

   ef.range("A9:B9").Select
   ef.Selection.Merge
   ef.range("A9").VALUE="补贴"
   ef.range("C9").VALUE=BT
   
   ef.range("H9").VALUE="补发"
   ef.range("I9").VALUE=BF

  * ef.range("D10").VALUE="午餐补贴"
   *ef.range("E10").VALUE=WCBT

   ef.range("F8").VALUE="岗薪工资"
   ef.range("G8").VALUE=GXGZ

   ef.range("F9").VALUE="月奖"
   ef.range("G9").VALUE=YUEJ

   *ef.range("F10").VALUE="施工津贴"
   *ef.range("G10").VALUE=SGJT


   ef.range("H8").VALUE="工龄工资"
   ef.range("I8").VALUE=GLGZ

   ef.range("J8").VALUE="加班工资"
   ef.range("K8").VALUE=JBGZ

   *ef.range("F10").VALUE="通讯费"
   *ef.range("G10").VALUE=TXF   
   
   ef.range("D9").VALUE="预发"
   ef.range("E9").VALUE=yf
   

   *ef.range("J8").VALUE="工地津贴"
   *ef.range("K8").VALUE=GDJT

   ef.range("J9").VALUE="病事假"
   ef.range("K9").VALUE=BSJ
   
   ef.range("A10:B10").Select
   ef.Selection.Merge
   ef.range("A10").VALUE="通讯费"
   ef.range("C10").VALUE=TXF
   
   ef.range("J10").VALUE="应发工资"
   ef.range("K10").VALUE=YFGZ
   ef.range("K10").Interior.ColorIndex = 15
   
   ef.range("A11:K11").Select
   ef.Selection.Merge  
   ef.range("A11").VALUE="代          目"
   
   ef.range("A12:B12").Select
   ef.Selection.Merge  
   ef.range("A12").VALUE="公积金"
   ef.range("C12").VALUE=GJJ
      
   ef.range("A13:B13").Select
   ef.Selection.Merge  
   ef.range("A13").VALUE="大病医疗"
   ef.range("C13").VALUE=DBYL

   ef.range("D12").VALUE="养老保险"
   ef.range("E12").VALUE=JBBX

   ef.range("D13").VALUE="个人调节税"
   ef.range("E13").VALUE=GRTJS

   ef.range("F12").VALUE="企业年金"
   ef.range("G12").VALUE=BCBX

   ef.range("F13").VALUE="其他扣款"
   ef.range("G13").VALUE=KKX

   ef.range("H12").VALUE="失业保险"
   ef.range("I12").VALUE=SYBX

   *ef.range("H13").VALUE="房租费"
   *ef.range("I13").VALUE=FZF

   ef.range("J12").VALUE="医疗保险"
   ef.range("K12").VALUE=YLBX

   ef.range("J13").VALUE="实发工资"
   ef.range("K13").VALUE=SFGZ      
   ef.range("K13").Interior.ColorIndex = 15

   ef.range("A14:B14").Select
   ef.Selection.Merge  
   ef.range("A14").VALUE="工资说明:"
   ef.range("A14").HorizontalAlignment=1
 
   ef.range("C14:K14").Select
   ef.Selection.Merge  
   ef.range("C14").VALUE=ALLTRIM(SM)
   ef.range("C14").HorizontalAlignment=1

      *给以上数据栏设为右对齐,保留2位小数
   ef.range("C8:C10,C12:C13,E8:E10,E12:E13,G8:G10,G12:G13,I8:I10,I12:I13,K8:K10,K12:K13").NumberFormatLocal = "0.00"
   ef.range("C8:C10,C12:C13,E8:E10,E12:E13,G8:G10,G12:G13,I8:I10,I12:I13,K8:K10,K12:K13").HorizontalAlignment=4
   
   ef.Range("a7:k14").Borders.LineStyle=1

   *以下是奖金部分
   SELE JJK
   SET FILTER TO XM=M_XM
   SUM JJHJ,DKSL,SFSL TO M_JJHJ,M_DKSL,M_SFSL
   COUNT TO M_TJBS
   ef.range("a15:d15").select
   ef.selection.Merge
   ef.range("A15").VALUE="2、奖金、津补贴及其他"
   ef.range("A15").HorizontalAlignment=1   
   ef.RANGE("A15").RowHeight=0.6/0.035

   ef.range("A16").VALUE="序号"
  
   ef.range("B16:d16").select
   ef.selection.Merge
   ef.range("B16").VALUE="发 放 名 称"
   ef.range("E16").VALUE="发放日期"
   ef.range("F16").VALUE="金额1"
   ef.range("G16").VALUE="金额2"
   ef.range("H16").VALUE="扣款"
   ef.range("I16").VALUE="应发数"
   ef.range("J16").VALUE="代扣款"
   ef.range("K16").VALUE="实发数"
   ef.range("L16").VALUE="支付方式"
   ef.range("M16").VALUE="备注"

   *数据栏设为右对齐,保留2位小数
   M_CELL="K"+STR(M_TJBS+19,2)
   ef.range("F17:&M_CELL").NumberFormatLocal = "0.00"
   ef.range("F17:&M_CELL").HorizontalAlignment=4
   *日期栏
   M_CELL="E"+STR(M_TJBS+17,2)
   ef.range("E17:&M_CELL").NumberFormatLocal = "YYYY-M-D"
   *发放名称,备注栏设为左对齐
   M_CELL="B"+STR(M_TJBS+17,2)
   ef.range("B17:&M_CELL").HorizontalAlignment=1
   M_CELL="M"+STR(M_TJBS+17,2)
   ef.range("M17:&M_CELL").HorizontalAlignment=1
   GO TOP
   M_CNT=1
   I=17
   DO WHILE .NOT. EOF()
      M_CELL1="B"+STR(I,2)
      M_CELL2="D"+STR(I,2)
      ef.range("&M_CELL1:&M_CELL2").select
      ef.selection.Merge
      ef.cells[I,1].value = M_CNT
      ef.cells[I,2].value = JJMC
      IF FFRQ<>{//}
         ef.cells[I,5].value = FFRQ
      ENDIF
      ef.cells[I,6].value = JJSL
      ef.cells[I,7].value = JJSL1
      ef.cells[I,8].value = KJSL
      ef.cells[I,9].value = JJHJ
      ef.cells[I,10].value = DKSL
      ef.cells[I,11].value = SFSL
      IF empty(zh)
         ef.cells[I,12].value ="现金支付"
      ELSE
         ef.cells[I,12].value ="银行代付"
      ENDIF
      ef.cells[I,13].value =ALLTRIM(SM)
      M_CNT=M_CNT+1
      I=I+1
      SKIP
   ENDDO
   M_CELL1="A"+STR(I,2)
   M_CELL2="E"+STR(I,2)
   ef.range("&M_CELL1:&M_CELL2").select
   ef.selection.Merge
   ef.range("&M_CELL1").VALUE="本期奖金、津补贴等小计"
   ef.range("&M_CELL1").Font.Name="黑体"
   
   ef.cells[I,9].value = M_JJHJ
   ef.cells[I,9].Interior.ColorIndex = 15
   ef.cells[I,10].value = M_DKSL
   ef.cells[I,10].Interior.ColorIndex = 15
   ef.cells[I,11].value = M_SFSL
   ef.cells[I,11].Interior.ColorIndex = 15
 
   M_CELL1="M"+STR(I,2)

*   ef.Range("a16:&M_CELL1").Borders(1).LineStyle=1
*   ef.Range("a16:&M_CELL1").Borders(2).LineStyle=1
*   ef.Range("a16:&M_CELL1").Borders(3).LineStyle=1
   ef.Range("a16:&M_CELL1").Borders.LineStyle=1

   
   *结尾部分
   ef.Rows(i+1).RowHeight=0.4/0.035
   I=I+2
   M_CELL1="A"+STR(I,2)
   M_CELL2="E"+STR(I,2)
   ef.range("&M_CELL1:&M_CELL2").select
   ef.selection.Merge
   ef.range("&M_CELL1").VALUE="本期总计(包括工资):"
   ef.range("&M_CELL1").Font.Name="黑体"
   
   ef.cells[I,9].value = M_JJHJ+M_YFGZ
   ef.cells[I,9].Interior.ColorIndex = 15
   ef.cells[I,10].value = M_DKSL+(M_YFGZ-M_SFGZ)
   ef.cells[I,10].Interior.ColorIndex = 15
   ef.cells[I,11].value = M_SFSL+M_SFGZ
   ef.cells[I,11].Interior.ColorIndex = 15
 
   M_CELL1="A"+STR(I,2)
   M_CELL2="K"+STR(I,2)
   
*   ef.Range("&M_CELL1:&M_CELL2").Borders(1).LineStyle=1
*   ef.Range("&M_CELL1:&M_CELL2").Borders(2).LineStyle=1
*   ef.Range("&M_CELL1:&M_CELL2").Borders(3).LineStyle=1
   ef.Range("&M_CELL1:&M_CELL2").Borders.LineStyle=1

   *加入另外通知说明信息
   IF !EMPTY(THISFORM.EDIT1.VALUE)
      I=I+1
      ef.Rows(i).RowHeight=1/0.035
      M_CELL1="A"+STR(I,2)
      M_CELL2="M"+STR(I,2)
      ef.range("&M_CELL1:&M_CELL2").select
      ef.selection.Merge
      ef.range("&M_CELL1").VALUE="注:"+ALLTRIM(THISFORM.EDIT1.VALUE)
      ef.range("&M_CELL1").HorizontalAlignment=1
      ef.range("&M_CELL1").Font.Bold=.t.  
*      ef.range("&M_CELL1").wordwrap=.t.  
   ENDIF

   ef.range("A6,A7,A11,A15").Font.Name="黑体"
   ef.cells[I,9].Font.Bold=.t.  
   ef.cells[I,10].Font.Bold=.t.
   ef.cells[I,11].Font.Bold=.t.
   
   ef.ActiveWorkbook.SaveAs("&默认驱动器.\LZGL\工资对帐单\&M_WJ")
   ef.Workbooks.close
   ef.quit
   
   =MESSAGEBOX('已完成',64)
   SELE GZK
   USE
   sele hxk
   return
ENDIF

[此贴子已经被作者于2018-4-20 15:58编辑过]

搜索更多相关主题的帖子: VALUE Select STR Selection Merge 
2018-04-20 15:54
myh7999
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2017-10-13
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册
选择集体打印的话,直接就显示已完成,然后一个表格文件也没有生成。
选择个人打印的话,如多选,只会生成选择框内第一项的文件,不能批量生成了,好头大啊!!!!!!
2018-04-20 16:01
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3147
专家分:8408
注 册:2015-3-25
收藏
得分:10 
先看数据,看是查询数据问题,还是导出EXCEL问题,
在生成EXCEL前面,Brow 看看数据
2018-04-20 17:13
myh7999
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2017-10-13
收藏
得分:0 
数据没问题呀,就是不能批量生成excel文件了。。。求解
2018-04-23 15:24
myh7999
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2017-10-13
收藏
得分:0 
我在老电脑上,XP系统的,能批量的,现在是WIN10,用兼容模式XP运行,也是不行。诶
2018-04-23 15:28
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3147
专家分:8408
注 册:2015-3-25
收藏
得分:0 
以下是引用myh7999在2018-4-23 15:24:47的发言:

数据没问题呀,就是不能批量生成excel文件了。。。求解

只能把你的数据,表单或者程序,放上来测试了..
2018-04-23 15:29
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3147
专家分:8408
注 册:2015-3-25
收藏
得分:0 
我打个比喻:
你列表框中,有10个名称,你这10个名称的数据结构是不是一样的,或者说,你导出EXCEL的方法是不是一样的.
你选择,集体打印时,不是不要打印这10个名称对应的数据,选择个人打印时,是不是只打印你列表框选上的这个数据.

如果导出方法相同,你可以把到出EXCEL的方法做成1个函数,如: DBF_EXECL(dbf_Name,xls_Name)

如果,集体打印,你就把上面10个名称,分别生成10个DBF,和10个 XLS文件名称(带路径),然后,用上面的函数,分别调用10次,就搞定了...
如果,个别打印,就只生成你选择的那个名称,生成1个DBF....
2018-04-23 15:44
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3147
专家分:8408
注 册:2015-3-25
收藏
得分:0 
以下是引用myh7999在2018-4-23 15:28:21的发言:

我在老电脑上,XP系统的,能批量的,现在是WIN10,用兼容模式XP运行,也是不行。诶

在XP中,假如有个表(字段1,字段2)
LOCATE FOR 字段1="ABC" &&是可以查到数据的
但在WIN7系统
LOCATE FOR 字段1="ABC" &&是有可能查不到数据的
要这样
LOCATE FOR ALLT(字段1)="ABC"
我没WIN10系统,就不知道了.估计,你的问题,也和这个差不多...
2018-04-23 15:50
myh7999
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2017-10-13
收藏
得分:0 
回复 8楼 mywisdom88
PUBLIC MYEAR1,MMONTH1,MDAY1,MYEAR2,MMONTH2,MDAY2,MY,MM
默认驱动器=SYS(5)
MYEAR1=THISFORM.SPINNER1.VALUE
MMONTH1=THISFORM.SPINNER2.VALUE
MDAY1=THISFORM.SPINNER3.VALUE
MYEAR2=THISFORM.SPINNER4.VALUE
MMONTH2=THISFORM.SPINNER5.VALUE
MDAY2=THISFORM.SPINNER6.VALUE
MY=THISFORM.SPINNER7.VALUE
MM=THISFORM.SPINNER8.VALUE
*FFRQ1=CTOD(STR(MYEAR1,4)+'/'+STR(MMONTH1,2)+'/'+STR(MDAY1,2))
*FFRQ2=CTOD(STR(MYEAR2,4)+'/'+STR(MMONTH2,2)+'/'+STR(MDAY2,2))
ffrq1=date(myear1,mmonth1,mday1)
ffrq2=date(myear2,mmonth2,mday2)

*检查文件是否存在
IF THISFORM.OPTIONGROUP1.VALUE=1
   GZWJ='\LZGL\DBF\GZ\GZ'+STR(MY,4)+IIF(MM<10,'0'+STR(MM,1),STR(MM,2))+'.DBF'
   IF !FILE('&GZWJ')
      =MESSAGEBOX(STR(MY,4)+'年'+STR(MM,2)+'月工资库不存在!',64)
      RETURN
   ENDIF
   IF USED('GZK')
      SELE GZK
      USE
   ENDIF
   USE &GZWJ ALIAS YSGZK IN 0
   SELE YSGZK
   COPY TO \LZGL\TMP\GZLS
   USE
   USE \LZGL\TMP\GZLS ALIAS GZK IN 0


ELSE
   TXWJ='\LZGL\LTXGZ\TX'+STR(MY,4)+IIF(MM<10,'0'+STR(MM,1),STR(MM,2))+'.DBF'
   IF !FILE('&TXWJ')
      =MESSAGEBOX(STR(MY,4)+'年'+STR(MM,2)+'月退休金库不存在!',64)
      RETURN
   ENDIF
   IF !USED('TXK')
      USE &TXWJ ALIAS TXK IN 0
   ENDIF
ENDIF

IF !USED('JJK')
   USE \LZGL\TMP\JJK IN 0 ALIAS JJK
   SELE JJK
   INDE ON FFRQ TO 3
ENDIF

*在职\集体打印
IF THISFORM.OPTIONGROUP1.VALUE=1 AND THISFORM.OPTIONGROUP2.VALUE=1
   SELE HXK   
   SET FILTER TO
   SET ORDER TO XH1
   repl all CHK with ' '
   for ncnt=1 to thisform.list1.listcount
       if thisform.list1.selected(ncnt)
          repl chk with '1' for GD=SUBS(alltrim(thisform.list1.list(ncnt)),1,10) AND GDBM=SUBS(alltrim(thisform.list1.list(ncnt)),13,10) AND GD<>'退休'
       endif
   endfor
   SET FILTER TO CHK='1'
   GO TOP
   CCNT=1000
DO WHILE .NOT. EOF()

   M_XM=XM
   M_ZGH=ZGH
   M_GD=ALLTRIM(GD)
   M_GDBM=ALLTRIM(GDBM)
   M_BM=IIF(M_GD=M_GDBM,M_GD,M_GD+M_GDBM)
   M_WJ=ALLTRIM(XM)+STR(MY,4)+IIF(MM<10,'0'+STR(MM,1),STR(MM,2))+'.xls'
   SELE JJK
   APPE FROM \LZGL\DBF\JJ\ZGJJ FOR XM=M_XM AND FFRQ>=FFRQ1 AND FFRQ<=FFRQ2 and !dele() and gzyn=1
   REPL ALL ZGBH WITH CCNT FOR XM=M_XM
   LOCA FOR XM=M_XM
   *若无奖金记录,则增加一条空记录
   IF EOF()
      APPE BLANK
      REPL XM WITH M_XM,ZGBH WITH CCNT  
   ENDIF
   SELE GZK
   LOCA FOR XM=M_XM
   *若无工资记录,则增加一条空记录
   IF EOF()
      APPE BLANK
      REPL XM WITH M_XM,ZGBH WITH CCNT  
   ENDIF
   M_YFGZ=YFGZ
   M_SFGZ=SFGZ
   *每个项目在\LZGL\TMP下建一子目录
*   IF !Directory("\LZGL\TMP\&M_GD")
*      MD \LZGL\TMP\&M_GD
*   ENDIF
   *每个部门在项目下建一子目录  
*   IF !Directory("\LZGL\TMP\&M_GD.\&M_GDBM")
*      MD \LZGL\TMP\&M_GD.\&M_GDBM
*   ENDIF

   *删除老文件
   IF FILE("\LZGL\工资对帐单\&M_WJ")
      ERAS \LZGL\工资对帐单\&M_WJ
   ENDIF
   
   *生成EXCEL表
   ef=CREATEOBJECT('Excel.application')  &&调用Excel程序
   ef.Workbooks.add   &&添加工作簿
   ef.Worksheets("sheet1").Activate   &&激活第一个工作表
   ef.visible=.F.  &&显示Excel界面
   ef.ActiveSheet.PageSetup.Orientation=2       &&纸张方向 1-纵向,2-横向
   ef.ActiveWindow.DisplayZeros=.F.
   ef.ActiveSheet.PageSetup.TopMargin=1.8/0.035  &&设置距顶1.8厘米
   ef.range("A1:M30").Select  
   ef.Selection.Font.Size = 9   &&设置整表默认字体大小为10
   ef.Selection.HorizontalAlignment = 3  &&居中对齐
*   num=reccount()   &&求导出总记录数
*   i=5
   ef.range("A:B").ColumnWidth=3.88
   ef.range("C:L").ColumnWidth=8.13
   ef.range("M1").ColumnWidth=18.50   
   ef.range("a1:a30").RowHeight=20   &&设置行高
   ef.range("A1:M1").Select  &&选择标题栏所在单元格
   ef.Selection.Merge   &&合并单元格
   with ef.range("A1")    &&设置标题及字体属性
          .value='工资对帐单'
          .Font.Name="黑体"
          .Font.size=16
   endwith
   ef.Rows(1).RowHeight=25   &&设置第一行高度为
   
   ef.range("A2:M2").Select  &&选择标题栏所在单元格
   ef.Selection.Merge   &&合并单元格
   with ef.range("A2")    &&设置标题及字体属性
          .value="("+DTOC(FFRQ1)+"——"+DTOC(FFRQ2)+")"
          .Font.Name="黑体"
          .Font.size=10
   endwith
   ef.Rows(2).RowHeight=25
   *ef.Rows(2).RowHeight=1/0.035  &&设置第二行高度为1cm
   ef.Rows(3).RowHeight=8

   ef.range("A4:B4").Select  &&选择标题栏所在单元格
   ef.Selection.Merge   &&合并单元格

   ef.range("C4:E4").Select  &&选择标题栏所在单元格
   ef.Selection.Merge   &&合并单元格

   ef.range("G4:H4").Select  &&选择标题栏所在单元格
   ef.Selection.Merge   &&合并单元格

   ef.range("J4:K4").Select  &&选择标题栏所在单元格
   ef.Selection.Merge   &&合并单元格

   ef.range("A4").value="部  门:"
   ef.range("a4,F4,I4").HorizontalAlignment=2
   ef.range("F4").value="职工号:"
*   ef.range("f4").HorizontalAlignment=1
   ef.range("I4").value="姓  名:"
*   ef.range("i4").HorizontalAlignment=1

   ef.range("C4").value=M_BM
   ef.range("G4").value=M_ZGH
   ef.range("J4").value=M_XM
   ef.range("C4,J4").HorizontalAlignment=1
   ef.range("G4").HorizontalAlignment=2
   ef.range("C4,G4,J4").Font.Name="黑体"
   ef.range("C4,G4,J4").Font.size=12

   ef.Rows(5).RowHeight=8

   ef.range("a6:d6").Select  &&选择标题栏所在单元格
   ef.Selection.Merge   &&合并单元格
   ef.range("a6").HorizontalAlignment=1
   ef.range("A6").VALUE="1、工资(银行代付)"

   ef.range("I6").VALUE="支付日期:"
   ef.range("I6").HorizontalAlignment=1   
   ef.range("J6:K6").Select  &&选择标题栏所在单元格
   ef.Selection.Merge   &&合并单元格
   if ffrq<>{//}
      ef.range("J6").VALUE=FFRQ
   endif
   ef.range("J6").HorizontalAlignment=2
   
   ef.range("A7:K7").Select
   ef.Selection.Merge  
   ef.range("A7").VALUE="工          成"
   
   ef.range("A8:B8").Select
   ef.Selection.Merge  
   ef.range("A8").VALUE="岗级"
   ef.range("C8").VALUE=GWGZGJ

   *ef.range("A9:B9").Select
   *ef.Selection.Merge  
   *ef.range("A9").VALUE="房贴"
   *ef.range("C9").VALUE=FT
   
   *ef.range("A10:B10").Select
   *ef.Selection.Merge  
   *ef.range("A10").VALUE="通讯费"
   *ef.range("C10").VALUE=TXF

   ef.range("D8").VALUE="薪级"
   ef.range("E8").VALUE=GWGZXJ

   ef.range("A9:B9").Select
   ef.Selection.Merge
   ef.range("A9").VALUE="补贴"
   ef.range("C9").VALUE=BT
   
   ef.range("H9").VALUE="补发"
   ef.range("I9").VALUE=BF

  * ef.range("D10").VALUE="午餐补贴"
   *ef.range("E10").VALUE=WCBT

   ef.range("F8").VALUE="岗薪工资"
   ef.range("G8").VALUE=GXGZ

   ef.range("F9").VALUE="月奖"
   ef.range("G9").VALUE=YUEJ

   *ef.range("F10").VALUE="施工津贴"
   *ef.range("G10").VALUE=SGJT


   ef.range("H8").VALUE="工龄工资"
   ef.range("I8").VALUE=GLGZ

   ef.range("J8").VALUE="加班工资"
   ef.range("K8").VALUE=JBGZ

   *ef.range("F10").VALUE="通讯费"
   *ef.range("G10").VALUE=TXF   
   
   ef.range("D9").VALUE="预发"
   ef.range("E9").VALUE=yf
   

   *ef.range("J8").VALUE="工地津贴"
   *ef.range("K8").VALUE=GDJT

   ef.range("J9").VALUE="病事假"
   ef.range("K9").VALUE=BSJ

   ef.range("J10").VALUE="应发工资"
   ef.range("K10").VALUE=YFGZ
   ef.range("K10").Interior.ColorIndex = 15
   
   ef.range("A11:K11").Select
   ef.Selection.Merge  
   ef.range("A11").VALUE="代          目"
   
   ef.range("A12:B12").Select
   ef.Selection.Merge  
   ef.range("A12").VALUE="公积金"
   ef.range("C12").VALUE=GJJ
      
   ef.range("A13:B13").Select
   ef.Selection.Merge  
   ef.range("A13").VALUE="大病医疗"
   ef.range("C13").VALUE=DBYL

   ef.range("D12").VALUE="养老保险"
   ef.range("E12").VALUE=JBBX

   ef.range("D13").VALUE="个人调节税"
   ef.range("E13").VALUE=GRTJS

   ef.range("F12").VALUE="企业年金"
   ef.range("G12").VALUE=BCBX

   ef.range("F13").VALUE="其他扣款"
   ef.range("G13").VALUE=KKX

   ef.range("H12").VALUE="失业保险"
   ef.range("I12").VALUE=SYBX

   *ef.range("H13").VALUE="房租费"
   *ef.range("I13").VALUE=FZF

   ef.range("J12").VALUE="医疗保险"
   ef.range("K12").VALUE=YLBX

   ef.range("J13").VALUE="实发工资"
   ef.range("K13").VALUE=SFGZ      
   ef.range("K13").Interior.ColorIndex = 15

   ef.range("A14:B14").Select
   ef.Selection.Merge  
   ef.range("A14").VALUE="工资说明:"
   ef.range("A14").HorizontalAlignment=1
 
   ef.range("C14:K14").Select
   ef.Selection.Merge  
   ef.range("C14").VALUE=ALLTRIM(SM)
   ef.range("C14").HorizontalAlignment=1

   
   *给以上数据栏设为右对齐,保留2位小数
   ef.range("C8:C10,C12:C13,E8:E10,E12:E13,G8:G10,G12:G13,I8:I10,I12:I13,K8:K10,K12:K13").NumberFormatLocal = "0.00"
   ef.range("C8:C10,C12:C13,E8:E10,E12:E13,G8:G10,G12:G13,I8:I10,I12:I13,K8:K10,K12:K13").HorizontalAlignment=4
   
   ef.Range("a7:k14").Borders.LineStyle=1

   *以下是奖金部分
   SELE JJK
   SET FILTER TO XM=M_XM
   SUM JJHJ,DKSL,SFSL TO M_JJHJ,M_DKSL,M_SFSL
   COUNT TO M_TJBS
   ef.range("a15:d15").select
   ef.selection.Merge
   ef.range("A15").VALUE="2、奖金、津补贴及其他"
   ef.range("A15").HorizontalAlignment=1   
   ef.RANGE("A15").RowHeight=0.6/0.035

   ef.range("A16").VALUE="序号"
  
   ef.range("B16:d16").select
   ef.selection.Merge
   ef.range("B16").VALUE="发 放 名 称"
   ef.range("E16").VALUE="发放日期"
   ef.range("F16").VALUE="金额1"
   ef.range("G16").VALUE="金额2"
   ef.range("H16").VALUE="扣款"
   ef.range("I16").VALUE="应发数"
   ef.range("J16").VALUE="代扣数"
   ef.range("K16").VALUE="实发数"
   ef.range("L16").VALUE="支付方式"
   ef.range("M16").VALUE="备注"

   *数据栏设为右对齐,保留2位小数
   M_CELL="K"+STR(M_TJBS+19,2)
   ef.range("F17:&M_CELL").NumberFormatLocal = "0.00"
   ef.range("F17:&M_CELL").HorizontalAlignment=4
   *日期栏
   M_CELL="E"+STR(M_TJBS+17,2)
   ef.range("E17:&M_CELL").NumberFormatLocal = "YYYY-M-D"
   *发放名称,备注栏设为左对齐
   M_CELL="B"+STR(M_TJBS+17,2)
   ef.range("B17:&M_CELL").HorizontalAlignment=1
   M_CELL="M"+STR(M_TJBS+17,2)
   ef.range("M17:&M_CELL").HorizontalAlignment=1
   GO TOP
   M_CNT=1
   I=17
   DO WHILE .NOT. EOF()
      M_CELL1="B"+STR(I,2)
      M_CELL2="D"+STR(I,2)
      ef.range("&M_CELL1:&M_CELL2").select
      ef.selection.Merge
      ef.cells[I,1].value = M_CNT
      ef.cells[I,2].value = JJMC
      IF FFRQ<>{//}
         ef.cells[I,5].value = FFRQ
      ENDIF
      ef.cells[I,6].value = JJSL
      ef.cells[I,7].value = JJSL1
      ef.cells[I,8].value = KJSL
      ef.cells[I,9].value = JJHJ
      ef.cells[I,10].value = DKSL
      ef.cells[I,11].value = SFSL
      IF empty(zh)
         ef.cells[I,12].value ="现金支付"
      ELSE
         ef.cells[I,12].value ="银行代付"
      ENDIF
      ef.cells[I,13].value =ALLTRIM(SM)
      M_CNT=M_CNT+1
      I=I+1
      SKIP
   ENDDO
   M_CELL1="A"+STR(I,2)
   M_CELL2="E"+STR(I,2)
   ef.range("&M_CELL1:&M_CELL2").select
   ef.selection.Merge
   ef.range("&M_CELL1").VALUE="本期奖金、津补贴等小计"
   ef.range("&M_CELL1").Font.Name="黑体"
   
   ef.cells[I,9].value = M_JJHJ
   ef.cells[I,9].Interior.ColorIndex = 15
   ef.cells[I,10].value = M_DKSL
   ef.cells[I,10].Interior.ColorIndex = 15
   ef.cells[I,11].value = M_SFSL
   ef.cells[I,11].Interior.ColorIndex = 15
 
   M_CELL1="M"+STR(I,2)

   ef.Range("a16:&M_CELL1").Borders.LineStyle=1
   
   *结尾部分
   ef.Rows(i+1).RowHeight=0.4/0.035
   I=I+2
   M_CELL1="A"+STR(I,2)
   M_CELL2="E"+STR(I,2)
   ef.range("&M_CELL1:&M_CELL2").select
   ef.selection.Merge
   ef.range("&M_CELL1").VALUE="本期总计(包括工资):"
   ef.range("&M_CELL1").Font.Name="黑体"
   
   ef.cells[I,9].value = M_JJHJ+M_YFGZ
   ef.cells[I,9].Interior.ColorIndex = 15
   ef.cells[I,10].value = M_DKSL+(M_YFGZ-M_SFGZ)
   ef.cells[I,10].Interior.ColorIndex = 15
   ef.cells[I,11].value = M_SFSL+M_SFGZ
   ef.cells[I,11].Interior.ColorIndex = 15
 
   M_CELL1="A"+STR(I,2)
   M_CELL2="K"+STR(I,2)
   ef.Range("&M_CELL1:&M_CELL2").Borders.LineStyle=1
   
   *加入另外通知说明信息
   IF !EMPTY(THISFORM.EDIT1.VALUE)
      I=I+1
      ef.Rows(i).RowHeight=1/0.035
      M_CELL1="A"+STR(I,2)
      M_CELL2="M"+STR(I,2)
      ef.range("&M_CELL1:&M_CELL2").select
      ef.selection.Merge
      ef.range("&M_CELL1").VALUE="注:"+ALLTRIM(THISFORM.EDIT1.VALUE)
      ef.range("&M_CELL1").HorizontalAlignment=1
      ef.range("&M_CELL1").Font.Bold=.t.  
*      ef.range("&M_CELL1").wordwrap=.t.  &&折行
   ENDIF

   ef.range("A6,A7,A11,A15").Font.Name="黑体"
   ef.cells[I,9].Font.Bold=.t.  
   ef.cells[I,10].Font.Bold=.t.
   ef.cells[I,11].Font.Bold=.t.
   
   ef.ActiveWorkbook.SaveAs("&默认驱动器.\LZGL\工资对帐单\&M_WJ")
   ef.Workbooks.close
   ef.quit
   SELE HXK
   SKIP
ENDDO
   
   =MESSAGEBOX('已完成',64)
   SELE GZK
   USE
   SELE HXK
ENDIF




*在职\按姓名打印
IF THISFORM.OPTIONGROUP1.VALUE=1 AND THISFORM.OPTIONGROUP2.VALUE=2
   SELE HXK   
   SET FILTER TO
   SET ORDER TO XH1
   repl all CHK with ' '
   for ncnt=1 to thisform.list1.listcount
       if thisform.list1.selected(ncnt)
          repl chk with '1' for XM=alltrim(thisform.list1.list(ncnt)) AND GD<>'退休'
       endif
   endfor
   SET FILTER TO CHK='1'
   
   
   
   GO TOP
   ccnt=1000

   M_XM=XM
   M_ZGH=ZGH
   M_GD=ALLTRIM(GD)
   M_GDBM=ALLTRIM(GDBM)
   M_BM=IIF(M_GD=M_GDBM,M_GD,M_GD+M_GDBM)
   M_WJ=ALLTRIM(XM)+STR(MY,4)+IIF(MM<10,'0'+STR(MM,1),STR(MM,2))+''
   SELE JJK
   APPE FROM \LZGL\DBF\JJ\ZGJJ FOR XM=M_XM AND FFRQ>=FFRQ1 AND FFRQ<=FFRQ2 and !dele()
   REPL ALL ZGBH WITH CCNT FOR XM=M_XM
   LOCA FOR XM=M_XM
   *若无奖金记录,则增加一条空记录
   IF EOF()
      APPE BLANK
      REPL XM WITH M_XM,ZGBH WITH CCNT  
   ENDIF
   SELE GZK
   LOCA FOR XM=M_XM
   *若无工资记录,则增加一条空记录
   IF EOF()
      APPE BLANK
      REPL XM WITH M_XM,ZGBH WITH CCNT  
   ENDIF
   M_YFGZ=YFGZ
   M_SFGZ=SFGZ
   *每个项目在\LZGL\TMP下建一子目录
*   IF !Directory("\LZGL\TMP\&M_GD")
*      MD \LZGL\TMP\&M_GD
*   ENDIF
   *每个部门在项目下建一子目录  
*   IF !Directory("\LZGL\TMP\&M_GD.\&M_GDBM")
*      MD \LZGL\TMP\&M_GD.\&M_GDBM
*   ENDIF
   *删除老文件
*   IF FILE("\LZGL\TMP\&M_GD.\&M_GDBM.\&M_WJ")
*      ERAS \LZGL\TMP\&M_GD.\&M_GDBM.\&M_WJ
*   ENDIF

   IF FILE("\LZGL\工资对帐单\&M_WJ")
      ERAS \LZGL\工资对帐单\&M_WJ
   ENDIF


   
   *生成EXCEL表
   ef=CREATEOBJECT('Excel.application')  &&调用Excel程序
   ef.Workbooks.add   &&添加工作簿
   ef.Worksheets("sheet1").Activate   &&激活第一个工作表
   ef.ActiveSheet.PageSetup.Orientation=2       &&纸张方向 1-纵向,2-横向
   ef.visible=.F.  &&显示Excel界面
   ef.ActiveSheet.PageSetup.TopMargin=1.8/0.035  &&设置距顶1.8厘米
   ef.ActiveWindow.DisplayZeros=.F.
   ef.range("A1:M30").Select  
   ef.Selection.Font.Size = 9   &&设置整表默认字体大小为10
   ef.Selection.HorizontalAlignment = 3  &&居中对齐
*   num=reccount()   &&求导出总记录数
*   i=5
   ef.range("A:B").ColumnWidth=3.88
   ef.range("C:L").ColumnWidth=8.13
   ef.range("M1").ColumnWidth=18.50   
   ef.range("a1:a30").RowHeight=20   &&设置行高
   ef.range("A1:M1").Select  &&选择标题栏所在单元格
   ef.Selection.Merge   &&合并单元格
   with ef.range("A1")    &&设置标题及字体属性
          .value='工资对帐单'
          .Font.Name="黑体"
          .Font.size=18
   endwith
   ef.Rows(1).RowHeight=25   &&设置第一行高度为
   
   ef.range("A2:M2").Select  &&选择标题栏所在单元格
   ef.Selection.Merge   &&合并单元格
   with ef.range("A2")    &&设置标题及字体属性
          .value="("+DTOC(FFRQ1)+"——"+DTOC(FFRQ2)+")"
          .Font.Name="黑体"
          .Font.size=10
   endwith
   ef.Rows(2).RowHeight=25
   *ef.Rows(2).RowHeight=1/0.035  &&设置第二行高度为1cm
   ef.Rows(3).RowHeight=8

   ef.range("A4:B4").Select  &&选择标题栏所在单元格
   ef.Selection.Merge   &&合并单元格

   ef.range("C4:E4").Select  &&选择标题栏所在单元格
   ef.Selection.Merge   &&合并单元格

   ef.range("G4:H4").Select  &&选择标题栏所在单元格
   ef.Selection.Merge   &&合并单元格

   ef.range("J4:K4").Select  &&选择标题栏所在单元格
   ef.Selection.Merge   &&合并单元格

   ef.range("A4").value="部  门:"
   ef.range("a4,F4,I4").HorizontalAlignment=2
   ef.range("F4").value="职工号:"
*   ef.range("f4").HorizontalAlignment=1
   ef.range("I4").value="姓  名:"
*   ef.range("i4").HorizontalAlignment=1

   ef.range("C4").value=M_BM
   ef.range("G4").value=M_ZGH
   ef.range("J4").value=M_XM
   ef.range("C4,J4").HorizontalAlignment=1
   ef.range("G4").HorizontalAlignment=2
   ef.range("C4,G4,J4").Font.Name="黑体"
   ef.range("C4,G4,J4").Font.size=12

   ef.Rows(5).RowHeight=8

   ef.range("a6:d6").Select  &&选择标题栏所在单元格
   ef.Selection.Merge   &&合并单元格
   ef.range("a6").HorizontalAlignment=1
   ef.range("A6").VALUE="1、工资(银行代付)"
   ef.range("I6").VALUE="支付日期:"
   ef.range("I6").HorizontalAlignment=1   
   ef.range("J6:K6").Select  &&选择标题栏所在单元格
   ef.Selection.Merge   &&合并单元格
   if ffrq<>{//}
      ef.range("J6").VALUE=FFRQ
   endif
   ef.range("J6").HorizontalAlignment=2
   
   ef.range("A7:K7").Select
   ef.Selection.Merge  
   ef.range("A7").VALUE="工          成"
  
   ef.range("A8:B8").Select
   ef.Selection.Merge  
   ef.range("A8").VALUE="岗级"
   ef.range("C8").VALUE=GWGZGJ

   *ef.range("A9:B9").Select
   *ef.Selection.Merge  
   *ef.range("A9").VALUE="房贴"
   *ef.range("C9").VALUE=FT
   
   *ef.range("A10:B10").Select
   *ef.Selection.Merge  
   *ef.range("A10").VALUE="通讯费"
   *ef.range("C10").VALUE=TXF

   ef.range("D8").VALUE="薪级"
   ef.range("E8").VALUE=GWGZXJ

   ef.range("A9:B9").Select
   ef.Selection.Merge
   ef.range("A9").VALUE="补贴"
   ef.range("C9").VALUE=BT
   
   ef.range("H9").VALUE="补发"
   ef.range("I9").VALUE=BF

  * ef.range("D10").VALUE="午餐补贴"
   *ef.range("E10").VALUE=WCBT

   ef.range("F8").VALUE="岗薪工资"
   ef.range("G8").VALUE=GXGZ

   ef.range("F9").VALUE="月奖"
   ef.range("G9").VALUE=YUEJ

   *ef.range("F10").VALUE="施工津贴"
   *ef.range("G10").VALUE=SGJT


   ef.range("H8").VALUE="工龄工资"
   ef.range("I8").VALUE=GLGZ

   ef.range("J8").VALUE="加班工资"
   ef.range("K8").VALUE=JBGZ

   *ef.range("F10").VALUE="通讯费"
   *ef.range("G10").VALUE=TXF   
   
   ef.range("D9").VALUE="预发"
   ef.range("E9").VALUE=yf
   

   *ef.range("J8").VALUE="工地津贴"
   *ef.range("K8").VALUE=GDJT

   ef.range("J9").VALUE="病事假"
   ef.range("K9").VALUE=BSJ
   
   ef.range("A10:B10").Select
   ef.Selection.Merge
   ef.range("A10").VALUE="通讯费"
   ef.range("C10").VALUE=TXF
   
   ef.range("J10").VALUE="应发工资"
   ef.range("K10").VALUE=YFGZ
   ef.range("K10").Interior.ColorIndex = 15
   
   ef.range("A11:K11").Select
   ef.Selection.Merge  
   ef.range("A11").VALUE="代          目"
   
   ef.range("A12:B12").Select
   ef.Selection.Merge  
   ef.range("A12").VALUE="公积金"
   ef.range("C12").VALUE=GJJ
      
   ef.range("A13:B13").Select
   ef.Selection.Merge  
   ef.range("A13").VALUE="大病医疗"
   ef.range("C13").VALUE=DBYL

   ef.range("D12").VALUE="养老保险"
   ef.range("E12").VALUE=JBBX

   ef.range("D13").VALUE="个人调节税"
   ef.range("E13").VALUE=GRTJS

   ef.range("F12").VALUE="企业年金"
   ef.range("G12").VALUE=BCBX

   ef.range("F13").VALUE="其他扣款"
   ef.range("G13").VALUE=KKX

   ef.range("H12").VALUE="失业保险"
   ef.range("I12").VALUE=SYBX

   *ef.range("H13").VALUE="房租费"
   *ef.range("I13").VALUE=FZF

   ef.range("J12").VALUE="医疗保险"
   ef.range("K12").VALUE=YLBX

   ef.range("J13").VALUE="实发工资"
   ef.range("K13").VALUE=SFGZ      
   ef.range("K13").Interior.ColorIndex = 15

   ef.range("A14:B14").Select
   ef.Selection.Merge  
   ef.range("A14").VALUE="工资说明:"
   ef.range("A14").HorizontalAlignment=1
 
   ef.range("C14:K14").Select
   ef.Selection.Merge  
   ef.range("C14").VALUE=ALLTRIM(SM)
   ef.range("C14").HorizontalAlignment=1

      *给以上数据栏设为右对齐,保留2位小数
   ef.range("C8:C10,C12:C13,E8:E10,E12:E13,G8:G10,G12:G13,I8:I10,I12:I13,K8:K10,K12:K13").NumberFormatLocal = "0.00"
   ef.range("C8:C10,C12:C13,E8:E10,E12:E13,G8:G10,G12:G13,I8:I10,I12:I13,K8:K10,K12:K13").HorizontalAlignment=4
   
   ef.Range("a7:k14").Borders.LineStyle=1

   *以下是奖金部分
   SELE JJK
   SET FILTER TO XM=M_XM
   SUM JJHJ,DKSL,SFSL TO M_JJHJ,M_DKSL,M_SFSL
   COUNT TO M_TJBS
   ef.range("a15:d15").select
   ef.selection.Merge
   ef.range("A15").VALUE="2、奖金、津补贴及其他"
   ef.range("A15").HorizontalAlignment=1   
   ef.RANGE("A15").RowHeight=0.6/0.035

   ef.range("A16").VALUE="序号"
  
   ef.range("B16:d16").select
   ef.selection.Merge
   ef.range("B16").VALUE="发 放 名 称"
   ef.range("E16").VALUE="发放日期"
   ef.range("F16").VALUE="金额1"
   ef.range("G16").VALUE="金额2"
   ef.range("H16").VALUE="扣款"
   ef.range("I16").VALUE="应发数"
   ef.range("J16").VALUE="代扣款"
   ef.range("K16").VALUE="实发数"
   ef.range("L16").VALUE="支付方式"
   ef.range("M16").VALUE="备注"

   *数据栏设为右对齐,保留2位小数
   M_CELL="K"+STR(M_TJBS+19,2)
   ef.range("F17:&M_CELL").NumberFormatLocal = "0.00"
   ef.range("F17:&M_CELL").HorizontalAlignment=4
   *日期栏
   M_CELL="E"+STR(M_TJBS+17,2)
   ef.range("E17:&M_CELL").NumberFormatLocal = "YYYY-M-D"
   *发放名称,备注栏设为左对齐
   M_CELL="B"+STR(M_TJBS+17,2)
   ef.range("B17:&M_CELL").HorizontalAlignment=1
   M_CELL="M"+STR(M_TJBS+17,2)
   ef.range("M17:&M_CELL").HorizontalAlignment=1
   GO TOP
   M_CNT=1
   I=17
   DO WHILE .NOT. EOF()
      M_CELL1="B"+STR(I,2)
      M_CELL2="D"+STR(I,2)
      ef.range("&M_CELL1:&M_CELL2").select
      ef.selection.Merge
      ef.cells[I,1].value = M_CNT
      ef.cells[I,2].value = JJMC
      IF FFRQ<>{//}
         ef.cells[I,5].value = FFRQ
      ENDIF
      ef.cells[I,6].value = JJSL
      ef.cells[I,7].value = JJSL1
      ef.cells[I,8].value = KJSL
      ef.cells[I,9].value = JJHJ
      ef.cells[I,10].value = DKSL
      ef.cells[I,11].value = SFSL
      IF empty(zh)
         ef.cells[I,12].value ="现金支付"
      ELSE
         ef.cells[I,12].value ="银行代付"
      ENDIF
      ef.cells[I,13].value =ALLTRIM(SM)
      M_CNT=M_CNT+1
      I=I+1
      SKIP
   ENDDO
   M_CELL1="A"+STR(I,2)
   M_CELL2="E"+STR(I,2)
   ef.range("&M_CELL1:&M_CELL2").select
   ef.selection.Merge
   ef.range("&M_CELL1").VALUE="本期奖金、津补贴等小计"
   ef.range("&M_CELL1").Font.Name="黑体"
   
   ef.cells[I,9].value = M_JJHJ
   ef.cells[I,9].Interior.ColorIndex = 15
   ef.cells[I,10].value = M_DKSL
   ef.cells[I,10].Interior.ColorIndex = 15
   ef.cells[I,11].value = M_SFSL
   ef.cells[I,11].Interior.ColorIndex = 15
 
   M_CELL1="M"+STR(I,2)

*   ef.Range("a16:&M_CELL1").Borders(1).LineStyle=1
*   ef.Range("a16:&M_CELL1").Borders(2).LineStyle=1
*   ef.Range("a16:&M_CELL1").Borders(3).LineStyle=1
   ef.Range("a16:&M_CELL1").Borders.LineStyle=1

   
   *结尾部分
   ef.Rows(i+1).RowHeight=0.4/0.035
   I=I+2
   M_CELL1="A"+STR(I,2)
   M_CELL2="E"+STR(I,2)
   ef.range("&M_CELL1:&M_CELL2").select
   ef.selection.Merge
   ef.range("&M_CELL1").VALUE="本期总计(包括工资):"
   ef.range("&M_CELL1").Font.Name="黑体"
   
   ef.cells[I,9].value = M_JJHJ+M_YFGZ
   ef.cells[I,9].Interior.ColorIndex = 15
   ef.cells[I,10].value = M_DKSL+(M_YFGZ-M_SFGZ)
   ef.cells[I,10].Interior.ColorIndex = 15
   ef.cells[I,11].value = M_SFSL+M_SFGZ
   ef.cells[I,11].Interior.ColorIndex = 15
 
   M_CELL1="A"+STR(I,2)
   M_CELL2="K"+STR(I,2)
   
*   ef.Range("&M_CELL1:&M_CELL2").Borders(1).LineStyle=1
*   ef.Range("&M_CELL1:&M_CELL2").Borders(2).LineStyle=1
*   ef.Range("&M_CELL1:&M_CELL2").Borders(3).LineStyle=1
   ef.Range("&M_CELL1:&M_CELL2").Borders.LineStyle=1

   *加入另外通知说明信息
   IF !EMPTY(THISFORM.EDIT1.VALUE)
      I=I+1
      ef.Rows(i).RowHeight=1/0.035
      M_CELL1="A"+STR(I,2)
      M_CELL2="M"+STR(I,2)
      ef.range("&M_CELL1:&M_CELL2").select
      ef.selection.Merge
      ef.range("&M_CELL1").VALUE="注:"+ALLTRIM(THISFORM.EDIT1.VALUE)
      ef.range("&M_CELL1").HorizontalAlignment=1
      ef.range("&M_CELL1").Font.Bold=.t.  
*      ef.range("&M_CELL1").wordwrap=.t.  
   ENDIF

   ef.range("A6,A7,A11,A15").Font.Name="黑体"
   ef.cells[I,9].Font.Bold=.t.  
   ef.cells[I,10].Font.Bold=.t.
   ef.cells[I,11].Font.Bold=.t.
   
   ef.ActiveWorkbook.SaveAs("&默认驱动器.\LZGL\工资对帐单\&M_WJ")
   ef.Workbooks.close
   ef.quit
   
   =MESSAGEBOX('已完成',64)
   SELE GZK
   USE
   sele hxk
   return
ENDIF

*退休\集体打印
IF THISFORM.OPTIONGROUP1.VALUE=2 AND THISFORM.OPTIONGROUP2.VALUE=1
   SELE HXK
   RETURN
ENDIF
*退休\按姓名打印
IF THISFORM.OPTIONGROUP1.VALUE=2 AND THISFORM.OPTIONGROUP2.VALUE=2
   SELE HXK
   RETURN
ENDIF

2018-04-27 13:15
myh7999
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2017-10-13
收藏
得分:0 
回复 8楼 mywisdom88
麻烦看下吧,我把整个SCX的程序都拿上来了
2018-04-27 13:15
快速回复:以前的大大用VFP6.0做了个生成excel工资对帐单的程序,但是现在这个程 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.122610 second(s), 11 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved