若依框架学习二
导出
实现导出功能,添加导出模块,首先确定导出数据实体,然后对controller中导出模块进行编写,在相应前端html上添加键值,在js上确定其导出Url。
前端html、js编写
在前端中添加按钮
<a class="btn btn-warning" onclick="$.table.exportExcel()" shiro:hasPermission="system:text:export">
<i class="fa fa-download"></i> 导出
</a>
在js那里声明Url
exportUrl: prefix+"/export",
后端实体、controller编写
首先选择确定导出的数据实体,并对实体数据中添加@Excel(name=“xxx”)对于不同的数据类型使用不同的cellType
@Excel(name="xxx")
编写controller里面的导出模块
// An highlighted block
@Log(title = "便签导出", businessType = BusinessType.EXPORT)
@RequiresPermissions("system:text:export")
@PostMapping("/export")
@ResponseBody
public AjaxResult export(Text text)
{
List<Text> list = textService.selectTextList(text);
ExcelUtil<Text> util = new ExcelUtil<Text>(Text.class);
return util.exportExcel(list, "便签数据");
}
导入
前端
首先需要在html上添加该功能的按钮
<a class="btn btn-info" onclick="$.table.importExcel()" shiro:hasPermission="system:text:import">
<i class="fa fa-upload"></i>导入
</a>
在js板块上写url地址
importUrl:prefix+"/importdata",
importTemplateUrl:prefix+"/importTemplate",
在下面直接添加导入模板
<!-- 导入区域 -->
<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>
后端
首先需要对controller里面定义import和importTemplate模块
@Log(title = "标签管理", businessType = BusinessType.IMPORT)
@RequiresPermissions("system:text:import")
@PostMapping("/importdata")
@ResponseBody
public AjaxResult importdata(MultipartFile file, boolean updateSupport)throws Exception
{
ExcelUtil<Text> util=new ExcelUtil<Text>(Text.class);
List<Text> textList=util.importExcel(file.getInputStream());
String message = textService.importText(textList, updateSupport);
return AjaxResult.success(message);
}
@RequiresPermissions("system:text:view")
@GetMapping("/importTemplate")
@ResponseBody
public AjaxResult importTemplate()
{
ExcelUtil<Text> util=new ExcelUtil<Text>(Text.class);
return util.importTemplateExcel("便签数据");
}
由于之前并未在textServiceIml中定义importText方法需要分别在ITextServic里面声明该方法并在textServiceIml里面改写此方法
在ITextService中添加该方法
public String importText(List<Text> textList, Boolean isUpdateSupport);
在TextServiceIml中重写此方法
// An highlighted block
@Override
public String importText(List<Text> textList, Boolean isUpdateSupport)
{
if(StringUtils.isNull(textList)||textList.size()==0)
{
throw new BusinessException("导入标签数据不能为空");
}
int successNum=0;
int failureNum=0;
StringBuilder successMsg=new StringBuilder();
StringBuilder failureMsg=new StringBuilder();
String operName=ShiroUtils.getLoginName();
if (failureNum > 0)
{
failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据格式不正确,错误如下:");
throw new BusinessException(failureMsg.toString());
}
else
{
successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + successNum + " 条,数据如下:");
}
return successMsg.toString();
}