将Excel中的数据格式转换成数据库中得数据格式
如果有十二个月的数据 就要将一条数据插入十二次
实现代码如下
List<Map<String, Object>> list = ReadExcelUtil.readExcel(
filePath, fileName, 0, 0, i); //获取excel的所有数据
// 新建一个map 装入前四列数据
Map<String, Object> convertsMap = new HashMap<String, Object>();
convertsMap.put("var0", "营业部");
convertsMap.put("var1", "团队");
convertsMap.put("var2", "工号");
convertsMap.put("var3", "姓名");
// convertsMap.put("var16", "季度业绩");
// convertsMap.put("var17", "归属地");
//定义一个新的list 用于存放新的数据
List<Map<String, Object>> newList = new ArrayList<>();
// 标题数据
Map<String, Object> map0 = list.get(0);
// excle的列数长度
int sizej = map0.size();
// 长度 ——>由上边map决定
int sizeConvert = convertsMap.size();
//进行遍历的次数 标题的长度 减去 固定格式长度
int sizeminus = sizej - sizeConvert;
if (sizeminus > 0) {
//j从1开始 是因为 0是标题行 不需要存入数据库
for (int j = 1; j < list.size(); j++) {
// 第一行是标题
Map<String, Object> mapj = list.get(j);//获得每一行的数据
//遍历多出的数据长度
for (int k = 0; k < sizeminus; k++) {
Map<String, Object> mapk = new HashMap<>();
mapk.put("var0", mapj.get("var0"));
mapk.put("var1", mapj.get("var1"));
mapk.put("var2", mapj.get("var2"));
mapk.put("var3", mapj.get("var3"));
// mapk.put("var16", mapj.get("var16"));
// mapk.put("var17", mapj.get("var17"));
// 标题
mapk.put("var4",
map0.get("var" + (sizeConvert + k))
.toString());
// 数据
String var5 = mapj.get(
"var" + (sizeConvert + k))
.toString();
if (LBUtil.isNotEmpty(var5)) {
mapk.put(
"var5",
mapj.get(
"var"
+ (sizeConvert + k))
.toString());
} else {
mapk.put("var5", "empty");
}
System.err.println("=======" + j
+ "========");
newList.add(mapk);
}
}
}
List<JifenCheckPermonth> infos = new ArrayList<>();
// Test1 test = new Test1();
/**
* id var 0;name 1;sex 2;age 3;
*/
int flag = 0;//定义一个标志
for (int j = 0; j < newList.size(); j++) {
flag++;//循环一次 标志加1
JifenCheckPermonth test = new JifenCheckPermonth();
// if (list.size() <= constants.READEXCELNUM) {
test.setId(UUIDGenerator.getUUID());
test.setDeptname(newList.get(j).get("var" + 0)
.toString());
test.setTeamname(newList.get(j).get("var" + 1)
.toString());
test.setSalercode(newList.get(j).get("var" + 2)
.toString());
test.setPersonname(newList.get(j).get("var" + 3)
.toString());
String level = newList.get(j).get("var" + 5)
.toString();
if (LBUtil.isNotEmpty(level)) {
test.setPositionlevel(level);
} else {
test.setPositionlevel("empty");
}
test.setChecktime(newList.get(j).get("var" + 4)
.toString());
// String achiv = newList.get(j).get("var" +
// 16).toString();
BigDecimal achiveBigDecimal = new BigDecimal(0.0);
test.setQuarterAchive(achiveBigDecimal);
// newList.get(j).get("var" + 17).toString()
test.setOwnland("");
test.setUid("");
Date nowDate = DateUtil1.getFormatDate(new Date(),
"yyyy-MM-dd HH:mm:ss");
test.setCreatetime(nowDate);
test.setUpdatetime(nowDate);
infos.add(test);
if (flag==500) {//当标志等于500的时候
jifenCheckPermonthService.txInsertBatch(infos);//进行批量插入操作
infos.clear();//清空list中的数据
flag=0;//将标志重新设置为0 j会继续从501开始遍历 将501到1000的数据装入到list中
}else if (j==list.size()-1) {//不加入这个判断 是因为 如果剩下的数据不够500条则不会插入到数据库
jifenCheckPermonthService.txInsertBatch(infos);
infos.clear();
flag=0;
}
}
return LBResult.build(400, "成功插入");
}