一:前端页面
1.导入按钮
<a class="btn btn-info" onclick="$.table.importExcel()"> <i
class="fa fa-upload"></i> 导入
</a>
2.script函数
<!--导入Excel-->
<script id="importTpl" type="text/template">
<form enctype="multipart/form-data" class="mt20 mb10">
<div class="col-xs-offset-1">
<input type="file" id="file" name="file"/>
<div class="mt10 pt5">
<input type="checkbox" id="updateSupport" name="updateSupport" title="如果数据已经存在,更新这条数据。">
是否更新已经存在的数据
<a onclick="$.table.importTemplate()" class="btn btn-default btn-xs"><i
class="fa fa-file-excel-o"></i> 下载模板</a>
</div>
<font color="red" class="pull-left mt10">
提示:仅允许导入“xls”或“xlsx”格式文件!
</font>
</div>
</form>
</script>
二:后端代码
1.controller
/**
* Excel导入
*
* @param file
* @param updateSupport
* @return
* @throws Exception
*/
@PostMapping("/importData")
@ResponseBody
public AjaxResult importData(MultipartFile file, boolean updateSupport) throws Exception {
ExcelUtil<ErpOrders> util = new ExcelUtil<ErpOrders>(ErpOrders.class);
List<ErpOrders> list = util.importExcel(file.getInputStream());
String operName = ShiroUtils.getSysUser().getLoginName();
for (ErpOrders s : list
) {
logger.debug(String.valueOf(s.getOrderId()));
}
String message = erpOrdersService.importData(list, updateSupport, operName);
return AjaxResult.success(message);
}
2.service
/**
* Excel的导入
* @param list
* @param updateSupport
* @param operName
* @return
*/
public String importData(List<ErpOrders> list, boolean updateSupport, String operName) ;
3.serviceImpl
/**
* Excel的导入
* @param list
* @param updateSupport
* @param operName
* @return
*/
@Override
public String importData(List<ErpOrders> list, boolean updateSupport, String operName) {
{
if (StringUtils.isNull(list) || list.size() == 0) {
throw new BaseException("导入数据不能为空!");
}
int successNum = 0;
int failureNum = 0;
StringBuilder successMsg = new StringBuilder();
StringBuilder failureMsg = new StringBuilder();
List<ErpOrders> existList = selectErpOrdersList(null);
for (ErpOrders importData : list) {
try {
// 验证是否存在这个學生
boolean userFlag = false;
for (ErpOrders entry : existList) {
if (entry.getOrderId().equals(importData.getOrderId())) {
userFlag = true;
break;
}
}
if (!userFlag) {
insertErpOrders(importData);
successNum++;
successMsg.append("<br/>" + successNum + "、数据 " + importData.getOrderId() + " 导入成功");
} else if (updateSupport) {
updateErpOrders(importData);
successNum++;
successMsg.append("<br/>" + successNum + "、数据 " + importData.getOrderId() + " 更新成功");
} else {
failureNum++;
failureMsg.append("<br/>" + failureNum + "、数据 " + importData.getOrderId() + " 已存在");
}
} catch (Exception e) {
failureNum++;
String msg = "<br/>" + failureNum + "、数据 " + importData.getOrderId() + " 导入失败:";
failureMsg.append(msg + e.getMessage());
}
}
if (failureNum > 0) {
failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据格式不正确,错误如下:");
throw new BaseException(failureMsg.toString());
} else {
successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + successNum + " 条,数据如下:");
}
return successMsg.toString();
}
}