springmvc实现excel数据分批导入数据库

将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, "成功插入");

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

乐观的Terry

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值