⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 excel_sample.prg

📁 Excel报表 我做的
💻 PRG
📖 第 1 页 / 共 2 页
字号:
 LOCAL hbhj1,hbhj2

        hbhj1 = CHR(64+5+cmsl)+'7:'+CHR(64+5+cmsl)+ALLTRIM(str(7+add_hs))
        hbhj2 = CHR(64+lszs)  +'7:'+CHR(64+lszs)  +ALLTRIM(str(7+add_hs))

        WITH Renk_ole
            .Range(hbhj1).select
            .Selection.merge
            .Range(hbhj2).select
            .Selection.merge
        ENDWITH   

              if .not. used('measures')
                 sele 0
                 use measures ALIAS measures
              endif

              if file('cmmctemp.dbf')
                 if used('cmmctemp')   
                   sele cmmctemp
                   use
                 endif
                 erase cmmctemp.dbf
              endif

       SELECT Exceltemp.measure, Measures.meas_name;
        FROM  exceltemp LEFT OUTER JOIN measures ;
          ON  Exceltemp.measure = Measures.meas_no;
        into dbf cmmctemp noconsole ;  
        GROUP BY Exceltemp.measure;
        ORDER BY Exceltemp.measure

           for i = 1 to cmsl
                GO i
                Renk_ole.cells(6,3+i).value      = ALLTRIM(meas_name)
                Renk_ole.cells(6,9+cmsl+i).value = ALLTRIM(meas_name)
           endfor

                sele cmmctemp
                use
                erase cmmctemp.dbf

              if file('ysmctemp.dbf')
                 if used('ysmctemp')   
                   sele ysmctemp
                   use
                 endif
                 erase ysmctemp.dbf
              endif

SELECT Exceltemp.pack_no, Exceltemp.batch, Tincts.tinct_name, Exceltemp.occur_out;
 FROM  exceltemp LEFT OUTER JOIN tincts ;
   ON  Exceltemp.tinct = Tincts.tinct_no;
 INTO DBF ysmctemp noconsole ;  
 ORDER BY Exceltemp.pack_no

 && sele exceltemp
 && use
 && erase exceltemp.dbf

LOCAL sum_hj_, sum_js_pack

     sele ysmctemp
        
       if recc() < 11
               local hb_2_pack_no
                     hb_2_pack_no = chr(64+7+cmsl)+'7:'+chr(64+7+cmsl)+allt(STR(7+add_hs))
                     Renk_ole.Range(hb_2_pack_no).select
                     Renk_ole.Selection.merge
           for i = 1 to recc()
               go i
               with Renk_ole
                    .cells(6+i,2).value = allt(batch)
                    .cells(6+i,3).value = allt(tinct_name)
                    .cells(6+i,4).value = allt(str(occur_out))
               endwith
           ENDFOR
               Renk_ole.cells(7,5+cmsl).value = allt(str(ckzs))
       else
           for i = 1 to add_hs+1
               go i
               with Renk_ole
                    .cells(6+i,2).value = allt(batch)
                    .cells(6+i,3).value = allt(tinct_name)
                    .cells(6+i,4).value = allt(str(occur_out))
               endwith
           endfor
               SUM occur_out TO sum_hj_ for RECNO() < add_hs + 2
               Renk_ole.cells(7,5+cmsl).value = allt(str(sum_hj_))
           for i = add_hs+2 to recc()
               go i
               with Renk_ole
                    .cells(6+i-add_hs-1,2+6+cmsl).value = allt(batch)
                    .cells(6+i-add_hs-1,3+6+cmsl).value = allt(tinct_name)
                    .cells(6+i-add_hs-1,4+6+cmsl).value = allt(str(occur_out))
               endwith
           endfor
               SUM occur_out TO sum_hj_ for RECNO() > add_hs + 1
               Renk_ole.cells(7,11+cmsl*2).value = allt(str(sum_hj_))
       endif

LOCAL pack_no_temp, hb_pack_rows_no, hb_occur

       go top
       pack_no_temp    = pack_no
       hb_pack_rows_no = 7

       Renk_ole.cells(7,1).value = ALLTRIM(STR(pack_no))

      if recc() < 11

           FOR i = 2 to recc()
               go i
               IF pack_no_temp = pack_no
                  hb_pack_no = 'A'+ALLTRIM(STR(hb_pack_rows_no))+':A'+ALLTRIM(STR(hb_pack_rows_no+1))
                  hb_occur   = chr(64+4+cmsl)+ALLTRIM(STR(hb_pack_rows_no))+':'+chr(64+4+cmsl)+ALLTRIM(STR(hb_pack_rows_no+1))
                      WITH Renk_ole
                           .Range(hb_pack_no).select
                           .Selection.merge
                           .Range(hb_occur).select
                           .Selection.merge
                      ENDWITH
               else
                  Renk_ole.cells(hb_pack_rows_no+1,1).value = ALLTRIM(STR(pack_no))
                  pack_no_temp = pack_no
               endif
                  hb_pack_rows_no = hb_pack_rows_no + 1
           ENDFOR
       else

           go add_hs+2
           Renk_ole.cells(7,7+cmsl).value = ALLTRIM(STR(pack_no))

           for i = 2 to add_hs+1
               go i
               IF pack_no_temp = pack_no
                  hb_pack_no = 'A'+ALLTRIM(STR(hb_pack_rows_no))+':A'+ALLTRIM(STR(hb_pack_rows_no+1))
                  hb_occur   = chr(64+4+cmsl)+ALLTRIM(STR(hb_pack_rows_no))+':'+chr(64+4+cmsl)+ALLTRIM(STR(hb_pack_rows_no+1))
                      WITH Renk_ole
                           .Range(hb_pack_no).select
                           .Selection.merge
                           .Range(hb_occur).select
                           .Selection.merge
                      ENDWITH
               else
                  Renk_ole.cells(hb_pack_rows_no+1,1).value = ALLTRIM(STR(pack_no))
                  pack_no_temp = pack_no
               endif
                  hb_pack_rows_no = hb_pack_rows_no + 1
           ENDFOR

           go add_hs+2
           pack_no_temp    = pack_no
           hb_pack_rows_no = 7

           for i = add_hs+3 to recc()
               go i
               IF pack_no_temp = pack_no
                  hb_pack_no = chr(64+7+cmsl)+ALLTRIM(STR(hb_pack_rows_no))+':'+chr(64+7+cmsl)+ALLTRIM(STR(hb_pack_rows_no+1))
                  hb_occur   = chr(64+10+cmsl*2)+ALLTRIM(STR(hb_pack_rows_no))+':'+chr(64+10+cmsl*2)+ALLTRIM(STR(hb_pack_rows_no+1))
                      WITH Renk_ole
                           .Range(hb_pack_no).select
                           .Selection.merge
                           .Range(hb_occur).select
                           .Selection.merge
                  ENDWITH
               else
                  Renk_ole.cells(hb_pack_rows_no+1,7+cmsl).value = ALLTRIM(STR(pack_no))
                  pack_no_temp = pack_no
               endif
                  hb_pack_rows_no = hb_pack_rows_no + 1
           ENDFOR

      endif

LOCAL hj_occur_out, hj_wz, hj_wz_end
  
       go top
              hj_wz = 7
       pack_no_temp = pack_no
       hj_occur_out = occur_out

       if recc() < 11

           FOR i = 2 to recc()
               go i
               IF pack_no_temp = pack_no
                  hj_occur_out = hj_occur_out + occur_out
               else
                  Renk_ole.cells(hj_wz,4+cmsl).value = ALLTRIM(STR(hj_occur_out))
                  hj_occur_out = occur_out
                         hj_wz = 7+i-1
               endif
                  pack_no_temp = pack_no
           ENDFOR
                  Renk_ole.cells(hj_wz,4+cmsl).value = ALLTRIM(STR(hj_occur_out))
     else

           for i = 2 to add_hs+1
               go i
               IF pack_no_temp = pack_no
                  hj_occur_out = hj_occur_out + occur_out
               else
                  Renk_ole.cells(hj_wz,4+cmsl).value = ALLTRIM(STR(hj_occur_out))
                  hj_occur_out = occur_out
                         hj_wz = 7+i-1
               endif
                  pack_no_temp = pack_no
           ENDFOR
                  Renk_ole.cells(hj_wz,4+cmsl).value = ALLTRIM(STR(hj_occur_out))

           go add_hs+2
                  hj_wz = 7
           pack_no_temp = pack_no
           hj_occur_out = occur_out

           for i = add_hs+3 to recc()
               go i
               IF pack_no_temp = pack_no
                  hj_occur_out = hj_occur_out + occur_out
               else
                  Renk_ole.cells(hj_wz,10+cmsl*2).value = ALLTRIM(STR(hj_occur_out))
                  hj_occur_out = occur_out
                         hj_wz = 7+i-add_hs-1-1
               endif
                  pack_no_temp = pack_no
           ENDFOR
                  Renk_ole.cells(hj_wz,10+cmsl*2).value = ALLTRIM(STR(hj_occur_out))

       endif

       if file('ysmctemp.dbf') 
         if used('ysmctemp')   
           sele ysmctemp
           use
         endif
         erase ysmctemp.dbf
      endif
           

with renk_ole
        .ActiveSheet.Range('A6:'+chr(64+11+cmsl*2)+'6').Borders(3).LineStyle = 9                                              && 字段名行顶
        .ActiveSheet.Range('A6:'+chr(64+11+cmsl*2)+'6').Borders(4).LineStyle = 1                                              && 字段名行底
        .ActiveSheet.Range('A6:A'+ALLTRIM(str(7+add_hs))).Borders(1).LineStyle = 9                                           && 最左
        .ActiveSheet.Range(chr(64+6+cmsl)+'6:'+chr(64+7+cmsl)+ALLTRIM(str(7+add_hs))).Borders(1).LineStyle = 1                && 分栏列
        .ActiveSheet.Range(chr(64+11+cmsl*2)+'6:'+chr(64+11+cmsl*2)+ALLTRIM(str(7+add_hs))).Borders(2).LineStyle = 9          && 最右
        .ActiveSheet.Range('A8:'+chr(64+11+cmsl*2)+ALLTRIM(str(8+add_hs))).Borders(3).LineStyle = 1                           && 数据行
        .ActiveSheet.Range('A6:'+chr(64+4+cmsl)+ALLTRIM(str(7+add_hs))).Borders(2).LineStyle = 1                              && 数据列
        .ActiveSheet.Range(chr(64+7+cmsl)+'6:'+chr(64+10+cmsl*2)+ALLTRIM(str(7+add_hs))).Borders(2).LineStyle = 1             && 数据列
        .ActiveSheet.Range('A'+ALLTRIM(str(7+add_hs))+':'+chr(64+11+cmsl*2)+ALLTRIM(str(7+add_hs))).Borders(4).LineStyle = 9  && 数据行底
      .ActiveSheet.Rows(5).Delete
&&      .ActiveSheet.PageSetup.PrintGridLines = .t.
        .Visible = .T.        
        .ActiveSheet.PageSetup.Orientation = 2
        .ActiveSheet.PrintPreview
        .ActiveWorkBook.SaveAs(lcpathtemp+"test.xls")
        .ActiveWorkbook.saved = .T.
        .Quit
endwith

quit

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -