1.在html 工具栏 toolbar div 层添加代码
<a class="btn btn-info" onclick="$.table.importExcel()">
<i class="fa fa-upload"></i> 导入
</a>
效果如下:
2. 添加导入弹框提示区域代码
<script id="importTpl" type="text/template">
<form enctype="multipart/form-data" class="mt40 mb20">
<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>
效果如下:
3.添加导入url
importUrl: prefix + "/importData",
importTemplateUrl: prefix + "/importTemplate",
放置位置如下(下图放置的地方如下):
4.接下来就到Cotrollerler
@GetMapping("/importTemplate")
@ResponseBody
public AjaxResult importTemplate(){
ExcelUtil<DlCeshi> util = new ExcelUtil<>(DlCeshi.class);
return util.importTemplateExcel("用户导入模板");
}
@PostMapping ( "/importData" )
@ResponseBody
public AjaxResult importData(MultipartFile file,boolean updateDlCeshi) throws Exception {
ExcelUtil<DlCeshi> util = new ExcelUtil<>(DlCeshi.class);
List < DlCeshi > list = util.importExcel ( file.getInputStream ( ) );
String message = dlCeshiService.importDlCeshi (list, updateDlCeshi );
return AjaxResult.success(message);
}
5.上文中提到的importDlCeshi
方法如下:
@Override
public String importDlCeshi(List<DlCeshi> list, boolean updateDlCeshi, String loginName) {
//判断传入的Excel 是否为空
if (StringUtils.isNull(list) || list.size() == 0)
{
throw new ServiceException("导入用户数据不能为空!");
}
//定义失败条数,接收导入失败数据量
int failureNum = 0;
StringBuilder successMsg = new StringBuilder ( );
StringBuilder failureMsg = new StringBuilder ( );
//遍历导入数据,并且插入数据库。
for ( DlCeshi dlCeshi : list ) {
this.insertDlCeshi(dlCeshi);
}
if ( failureNum > 0 ) {
failureMsg.insert ( 0 , "很抱歉,导入失败!共 " + failureNum + " 条数据格式不正确,错误如下:" );
throw new ServiceException ( failureMsg.toString ( ) );
} else {
successMsg.insert ( 0 , "数据已全部导入成功!共 " + list.size () + " 条,数据如下:" +"\n"+list.toString ());
}
return successMsg.toString ();
}
完结:
导入效果如下: