程序代码:
set talk off set safe off clos all crea table abc (准考证号 c(20),姓名 c(8),总分 n(6),考场 c(20),rnd n(6),年级 c(6),考号 c(10),类别 c(2)) M_File=GETFILE('xls','学生基本数据') IF M_File=" " =MESSAGEBOX("请选择待编排考场的学生基本数据文件!",0+48,"提示") RETURN ELSE IF JUSTEXT(M_FILE)#"XLS" &&获得文件扩展名 =MESSAGEBOX("您选择的不是EXCEL文档!",0+48,"提示") RETURN ENDIF ENDIF myexcel=createobject('excel.application') &&创建一个对象 myexcel.visible=.f.&&不可见 bookexcel=myexcel.workbooks.open(M_File) &&打开指定文件 o_SheetName=myexcel.application.ActiveSheet.Name &&获取当前激活工作表的名称 UsedRange =bookexcel.worksheets(o_SheetName).UsedRange &&返回工作表中可使用的区域,UsedRange表的属性 o_cols=UsedRange.columns.count &&汇总列 IF UsedRange.rows.count<=1 =MESSAGEBOX("待导入数据行数太少,请检查!",0+16,"提示") ELSE DIMENSION ls(UsedRange.rows.count ,o_cols) ls=bookexcel.activesheet.usedrange.value FOR i=2 TO ALEN(ls,1) APPEND BLANK REPLACE 姓名 WITH ls(i,2),年级 WITH ls(i,1) IF TYPE("ls(i,3)")='N' REPLACE 考号 WITH ALLTRIM(STR(ls(i,3))) ELSE REPLACE 考号 WITH ls(i,3) ENDIF [i] IF TYPE("ls(i,4)")='N' REPLACE 总分 WITH ls(i,5) ELSE REPLACE 总分 WITH val(ls(i,5)) ENDIF [/i] IF TYPE("ls(i,5)")='N' REPLACE 类别 WITH ALLTRIM(STR(ls(i,5))) ELSE REPLACE 类别 WITH ls(i,5) ENDIF ENDFOR ENDIF myexcel.workbooks.close &&关闭工作区 myexcel.quit &&关闭excel input "每考场人数:" to rs1 sele 1 [i]*scan * [color=#FF00FF]REPLACE all rnd with 99999*RAND()[/color] *ENDSCAN inde on -1*总分 to rnd1 [/i]kszs=INT(RECCOUNT()/rs1)+1 for i=1 to kszs for j=1 to rs1 [i] zkzh1='6'+subs(年级,1,1)+subs(年级,4,2)+'5'+IIF(i<10,'0'+STR(i,1),STR(i,2))+IIF(j<10,'0'+STR(j,1),STR(j,2)) [/i] REPLACE 准考证号 with zkzh1,考场 with IIF(i<10,'0'+STR(i,1),STR(i,2)) if !eof() skip ELSE return ENDIF endf endf copy TO d:\考场安排 type xls fiel 准考证号,姓名,考场不考虑美观的情况下,做了一个程序,不知道能不能达到你的目的。看了楼主对于考号的解释后修改部分内容(斜体部分)。
[ 本帖最后由 wangzhiyi 于 2015-3-17 14:58 编辑 ]