程序代码: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 编辑 ]









