操作之前需求導入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();
}
}
}