/**
* @Title: judgeRepeatExcle
* @Description: TODO(判定Excel中某列是否有重复数据)
* @param wb
* @param column
* @param ignoreRows
* @param errorList
* @return 设定文件
* List
* @throws
*/
public List
if(column>=0){
Cell cell = null;
HashMap
HashMap
for (int sheetIndex = 0; sheetIndex < wb.getNumberOfSheets(); sheetIndex++) {//循环所有的sheet,一个excle中可能有多个sheet
Sheet sheet = wb.getSheetAt(sheetIndex);
int firstRowNum = sheet.getFirstRowNum();
int lastRowNum = sheet.getLastRowNum();
firstRowNum=firstRowNum>ignoreRows?firstRowNum:ignoreRows;
Row row = null;
for (int i = firstRowNum; i <= lastRowNum; i++) {
row = sheet.getRow(i); //取得第i行
if(row == null){
break;
}
cell = row.getCell(column); //取得i行的第column列
String value = cell.toString();//保存i行的第column列的值
/*在excel中,计数是从0开始的,为了使结果与Excel中显示的行数保持一致,让行数newNum=为(i+1)
*/
int newNum=i+1;
if(map.containsKey(value)){//如果Map集合中包含指定的键名,则返回true;否则返回false。
String lineNum=map.get(value);//拿到先前保存的行号
if(tmap.containsKey(value)){
String str=tmap.get(value);//拿到先前保存的所有行号记录
tmap.put(value, str+" ,"+newNum);//更新后,显示效果:——》行重复:在第 2 ,3 , 5
}else{
tmap.put(value, "重复行数:第 "+lineNum+" ,"+newNum);//最后显示效果:——》行重复:在第 2 ,3
}
}
map.put(value, newNum+"");//把i行的第column列的值与行号保存到map中
}
}
Iterator
while(it.hasNext()){
Map.Entry
ErrorBean eb = new ErrorBean();
eb.setMessage("项目编码:"+entry.getKey()+"; "+entry.getValue()+"行;");
errorList.add(eb);
}
}
return errorList;
}