从excel导入到数据库(省略后端的service,dao以及SQL语句部分)

前端数据:

<a class="button_type1 addTabPage" ng-click="importDatas()"><i
				class="iconfont">&#xe628;</i>导入</a>
			<!-- 配置信息表模态框(Modal) -->
			<div class="modal fade" id="myModal" tabindex="-1" role="dialog"
				aria-labelledby="myModalLabel" aria-hidden="true">
				<div class="modal-dialog">
					<div class="modal-content">
						<div class="modal-header">
							<button type="button" class="close" data-dismiss="modal"
								aria-hidden="true">&times;</button>
							<h4 class="modal-title" id="myModalLabel">导入信息</h4>
						</div>
						<div class="modal-body">
							<div ng-if="importFineshed == '0'">
								<div style="margin-left: 50px;">
									<input type="hidden" ng-model="purchProjectId"> <font
										style="font-weight: bold; float: left">请选择文件 :</font><input
										type="file" class="file" id="inputFile" style="float: left">
										<!-- 这里是你的模板坐在的位置,不要使用中文字符 -->
									<a
										href="downloadFile/UserSummaryTable5GTechnologyAndApplicationCompetition.xlsx"
										download="导入模板.xls">下载导入模板</a>
								</div>
								<br> <br>
								<div style="width: 200px; margin-left: 200px;">
									<button class="btn btn-primary" ng-click="uploadFile()">确认</button>
									<button class="btn btn-warning" ng-click="cancel()">取消</button>
								</div>
								<br> <br> <br>
								<div>
									<h5>
										<font color="red">1.excel中数据行数不能超过1000行,大小不超过10M! </font>
									</h5>
									<h5>
										<font color="red">2.请参照模板说明进行导入,特别是必输项以及某些有选择范围的数据 </font>
									</h5>
									<h5>
										<font color="red">3.导入过程可能需要两三分钟,请在本页耐心等待!</font>
									</h5>
									<h5>
										<font color="red">4.数据如果导入成功,表明excel上的数据全部导入了系统,如果导入失败,请全部重新导入!</font>
									</h5>
								</div>
							</div>
						</div>
					</div>
				</div>
			</div>
		</div>
		<!-- 配置信息表模态框(Modal) -->
		<div class="modal fade" id="myModal1" tabindex="-1" role="dialog"
			aria-labelledby="myModalLabe2" aria-hidden="true">
			<div class="modal-dialog">
				<div class="maxbox edit_type1">
					<div class="baibox" id="myModal1">
						<div class="tips">
							<span class="active">导入情况信息</span>
						</div>
						<div class="lists">
							<div class="list_box">
								<div class="hang">
									<div class="lie"
										style='width: 100%; height: 400px; overflow-y: scroll; zoom: 1;'>
										<label>错误信息:</label> <font color="red"> {{importMsg}}</font>
									</div>
								</div>
							</div>
							<div class="form_buts">

								<span class="style" ng-click="close()">关闭</span>
							</div>
						</div>
					</div>
				</div>
			</div>
		</div>

2.前端controller.js

toggle指的是,点击的时候触发和当前模态窗口状态相反的操作。比如现在模态窗口是关闭的,那么点击按钮,就打开窗口。如果当前窗口是打开的,那么点击按钮就会关闭。
show,指的是点击的时候触发打开窗口。
hide,指的是点击的时候触发关闭模态窗。

//点击关闭按钮
	$scope.close  = function(){
		$("#myModal1").modal("hide");
		$scope.searchData($scope.searchWhere);
	}
	// 点击导入按钮
	$scope.importDatas = function() {
		$("#myModal").modal("show");
		$scope.importFineshed = '0';
	}
	// 点击取消按钮
	$scope.cancel = function() {
		$("#myModal").modal("hide");
	}
	// 点击确定按钮
	$scope.uploadFile = function() {
		var fd = new FormData();
		var file = document.querySelector('input[type=file]').files[0];
		fd.append('file', file);
		$http(
				{
					method : 'POST',
					url : Constants.API.INTERFACE_URL
							+ "a/xf4g/xfUser/importXfUserData",
					data : fd,
					headers : {
						'Content-Type' : undefined
					},
					transformRequest : angular.identity
				}).success(function(response) {
					$scope.importMsg = response;
					$("#myModal").modal("hide");
					$("#myModal1").modal("show");
				});
	}

3.后端的controller层的代码主要是用于把从excel中获取的数据进行判定,
并且数据中的teamName,schoolName需要进行再次查询,获取到数据中的teamId
和officeId,获取到数据之后,需要根据loginName来查询是否重复,重复的执行update,
不重复的执行save(获取一个UUID赋值给XfUser对象)

@CrossOrigin(origins = "*", maxAge = 3600)
	@RequestMapping(value = "importXfUserData", method = RequestMethod.POST)
	@ResponseBody
	public String importXfUserData(@RequestParam("file") MultipartFile file) {
		String failureMsg = "";
		int successNum = 0;
		int failureNum = 0;
		try {
			ImportExcel ei = new ImportExcel(file, 1, 0);
			List<XfUser> list = ei.getDataList(XfUser.class);
			if (list != null && list.size() > 0) {
				for (int i = 0; i < list.size(); i++) {
					boolean bl = true;
					if (list.get(i).getName() == null || "".equals(list.get(i).getName())) {
						failureMsg = failureMsg + "第" + (i + 1) + "条数据姓名为空,未能导入!";
						bl = false;
					}
					if (list.get(i).getLoginName() == null || "".equals(list.get(i).getLoginName())) {
						failureMsg = failureMsg + "第" + (i + 1) + "条数据登录名称为空,未能导入!";
						bl = false;
					}
					if (list.get(i).getPassWord() == null || "".equals(list.get(i).getPassWord())) {
						failureMsg = failureMsg + "第" + (i + 1) + "条数据密码为空,未能导入!";
						bl = false;
					}
					if (list.get(i).getTeamName() == null || "".equals(list.get(i).getTeamName())) {
						failureMsg = failureMsg + "第" + (i + 1) + "条数据战队名称为空,未能导入!";
						bl = false;
					}
                        //查询teamId
					String teamId = xfTeamService.findTeamIdByTeamName(list.get(i).getTeamName());
					list.get(i).setTeamId(teamId);
					if (list.get(i).getDyfield5() == null || "".equals(list.get(i).getDyfield5())) {
						failureMsg = failureMsg + "第" + (i + 1) + "条数据用户类型为空,未能导入!";
						bl = false;
					}
					if (list.get(i).getSchoolName() == null || "".equals(list.get(i).getSchoolName())) {
						failureMsg = failureMsg + "第" + (i + 1) + "条数据学校名称为空,未能导入!";
						bl = false;
					}
                        //查询officeId
					String officeId = xfSchoolService.findOfficeIdBySchoolName(list.get(i).getSchoolName());
					list.get(i).setOfficeId(officeId);
					if (list.get(i).getProjectType() == null || "".equals(list.get(i).getProjectType())) {
						failureMsg = failureMsg + "第" + (i + 1) + "条数据账号类型为空,未能导入!";
						bl = false;
					}
					if (bl == false) {
						failureNum++;
						continue;
					}
					XfUser xfUser = list.get(i);
					String name = xfUser.getName();
                        //检查登录名是否重复
					int result1 = xfUserService.checkByLoginName(name);
					int result = 0;
					if (result1 > 0) {
                        //登录名重复则执行更新操作
						result = xfUserService.updateXfUser(xfUser);
					} else {
                        //登录名不重复则执行新增操作
                        //获取一个UUID作为User的Id
						 String uuid = UUID.randomUUID().toString().replace("-", "").toLowerCase();
						 xfUser.setId(uuid);
						result = xfUserService.savexfUser(xfUser);
					}
					
					if (result > 0) {
						successNum++;
					} else {
						failureMsg = failureMsg + "第" + (i + 1) + "条数据添加失败,未能添加!";
					}
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		failureMsg = "成功导入" + successNum + "条数据," + "导入失败" + failureNum + "条数据。失败信息:" + failureMsg;
		return failureMsg;
	}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值