终于做了个小成品出来。是有关于学生考场分配的。电子表格发在“https://download.csdn.net/download/aybzliuzy/12900839”。0积分下载,利用永中office打开。因为我用的是深度里面的永中office2019体验版,所以没有做成有按钮的。
void fillkczh(int frc,int bgkc,int edkc,int rs)
{
Worksheet st2=Application.getWorkbooks().getActiveWorkbook().getWorksheets().getWorksheet(2);
int ii=frc;
for (int i=bgkc;i<=edkc;i++)
{
for (int j=1;j<=rs;j++)
{
if (!"".equals(st2.getCellString(ii, 1)))
{
st2.setCellValue(ii,5,i);
st2.setCellValue(ii,6,j);
ii++;
}
}
}
}
void paixu(int i)
{
Worksheet st2=Application.getWorkbooks().getActiveWorkbook().getWorksheets().getWorksheet(2);
Range range=st2.getRange("A1:G5000");
SortProperties px=new SortProperties();
px.setSortKey1(i);
px.setOrder1(true);
px.setRowHeader(true);
range.sort(px);
}
void MEP()
//MakeupExaminationPlace
{
Worksheet st1=Application.getWorkbooks().getActiveWorkbook().getWorksheets().getWorksheet(1);
Worksheet st2=Application.getWorkbooks().getActiveWorkbook().getWorksheets().getWorksheet(2);
Range range=st2.getRange("D2:F5000");
range.clear();
paixu(3);
int ii=3;
int ik=0;
while (!"".equals(st1.getCellString(ii, 5)) || !"".equals(st1.getCellString(ii, 6)))
{
for (int x=1+(int)st1.getCellValue(ii,5);x<2+st1.getCellValue(ii,6);x=x+1)
{
if(!"".equals(st2.getCellString(x, 1)))
{
st2.setCellValue(x,4,ik+Math.random());
}
}
ii++;
ik++;
}
paixu(4);
ii=2;
while (!"".equals(st2.getCellString(ii, 1)))
{
st2.setCellValue(ii,4,(ii-1));
ii++;
}
ii=3;
ik=2;
while (!"".equals(st1.getCellString(ii, 1)) || !"".equals(st1.getCellString(ii, 2))|| !"".equals(st1.getCellString(ii, 3)))
{
fillkczh(ik,(int)st1.getCellValue(ii,1),(int)st1.getCellValue(ii,2),(int)st1.getCellValue(ii,3));
ik=ik+((int)st1.getCellValue(ii,2)-(int)st1.getCellValue(ii,1)+1)*(int)st1.getCellValue(ii,3);
ii++;
}
}
代码就是这个代码,设计思想是先按排名排序,按规则生成随机数,然后按随机数排序,按考场及人数排考场及座号。