操作之前需求导入jxl.jar这个jar包。
需求描述:
1.表格中C栏为原始打分数据,D栏为建议原始打分数据不变、提高或者减少,E栏是需要打分的数据栏,根据D栏的建议进行打分,F栏为打分的示例。
2.大家在D栏建议的基础上打分,打分的规则是在原始的分数上 (+-5)例如:原始分数为30 建议分数为增大,则打分为(31-35都可以 ),但是所有建议增大的项目不能都增加相同的数值,比如都增加2,即原始分数为30、35,43,建议分数为增大,不能为32,37,45;
3.建议为分数不变的,打分的时候尽量不要全部不变(需变化的数量没有具体要求,根据自己去变化就行,但是也不要全部变化,要保证有不变的分值),在原始的分数上+-2,比如:原始分数为30,建议为不变,则打分的时候(28-32都可以)
代码:
import java.io.File;
import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableCell;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
public class Operator {
public static void main(String[] args){
try
{
File xlsFile = new File("D:\\Program Files (x86)\\eclipseworkspace\\ExcelOp\\专家建议打分模板.xls");
// 获得工作簿对象
Workbook workbook=Workbook.getWorkbook(xlsFile);
WritableWorkbook writeBook=Workbook.createWorkbook(new File("副本.xls"),workbook);
// 获得工作表
WritableSheet sheet = writeBook.getSheet(0);
if(sheet!=null)
{
int cnt=0;
for (int row = 1; row < 541; row++)
{
String advice=sheet.getCell(3, row).getContents();
WritableCell cell=sheet.getWritableCell(4,row);
jxl.format.CellFormat cf=cell.getCellFormat();
Label lable=null;
int now=Integer.parseInt(sheet.getCell(2, row).getContents());
if(advice.equals("不变"))
{
int random=(int)(5*Math.random());
if(cnt%2==0)
{
lable=new Label(4, row, String.valueOf(now));
}
else
{
lable=new Label(4, row, String.valueOf(now-2+random));
}
cnt++;
}
else if(advice.equals("提高"))
{
int random=(int)(5*Math.random());
lable=new Label(4, row, String.valueOf(now+1+random));
}
else if(advice.equals("降低"))
{
int random=(int)(5*Math.random());
lable=new Label(4, row, String.valueOf(now-1-random));
}
//将修改后的单元格格式设置成和原来一样的
lable.setCellFormat(cf);
//将修改后的cell放回sheet中
sheet.addCell(lable);
}
}
writeBook.write();
writeBook.close();
workbook.close();
}
catch(Exception e)
{
e.printStackTrace();
}
}
}