EasyExcel导出
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>2.1.1</version>
</dependency>
response.setContentType ("application/vnd.ms-excel");
response.setCharacterEncoding ("utf-8");
// 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系
String fileName = URLEncoder.encode ("数据字典", "UTF-8");
response.setHeader ("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
List<DictEeVo> dictEeVos = query ().list ().stream ().map (dict -> {
DictEeVo dictEeVo = new DictEeVo ();
BeanUtils.copyProperties (dict, dictEeVo, DictEeVo.class);
return dictEeVo;
}).collect (Collectors.toList ());
try {
EasyExcel.write (response.getOutputStream (), DictEeVo.class).sheet ("数据字典").doWrite (dictEeVos);
} catch (IOException e) {
throw new RuntimeException (e);
}
<div class="el-toolbar">
<div class="el-toolbar-body" style="justify-content: flex-start;">
<el-button type="text" @click="exportData"><i class="fa fa-plus"/> 导出</el-button>
</div>
</div>
// 导出数据字典
exportData() {
window.location.href="http://localhost:8202/admin/cmn/dict/exportData"
}
EasyExcel导入
监听器
// EasyExcel 的监视器
public class DictListener extends AnalysisEventListener<DictEeVo> {
private IService service;
/*
* 存放数据的集合
* */
private List<Dict> dicts = new ArrayList<> ();
public DictListener(IService service) {
this.service = service;
}
//一行一行读取
@Override
public void invoke(DictEeVo dictEeVo, AnalysisContext analysisContext) {
Dict dict = new Dict ();
BeanUtils.copyProperties (dictEeVo, dict, Dict.class);
// 添加到集合中,然后进行批量添加
dicts.add (dict);
}
@Override
public void doAfterAllAnalysed(AnalysisContext analysisContext) {
// 批量导入
service.saveBatch (dicts);
}
}
public void importDict(MultipartFile file) {
try {
// 读的结果封装为 DictEeVo
EasyExcel.read (file.getInputStream (), DictEeVo.class, new DictListener (this)).sheet ().doRead ();
} catch (IOException e) {
throw new RuntimeException (e);
}
}
<div class="el-toolbar">
<div class="el-toolbar-body" style="justify-content: flex-start;">
<el-button type="text" @click="exportData"><i class="fa fa-plus"/> 导出</el-button>
<el-button type="text" @click="importData"><i class="fa fa-plus"/> 导入</el-button>
</div>
</div>
<el-dialog title="上传文件" :visible.sync="dialogImportVisible" width="480px">
<el-form label-position="right" label-width="170px">
<el-form-item label="文件">
<!-- action 提交的接口地址 -->
<!-- on-success 成功上传的方法 -->
<el-upload
:multiple="false"
:on-success="onUploadSuccess"
:action="'http://localhost:8202/admin/cmn/dict/importData'"
class="upload-demo"
>
<!-- 上传的按钮 -->
<el-button size="small" type="primary">点击上传</el-button>
<div slot="tip" class="el-upload__tip">只能上传xls文件,且不超过500kb</div>
</el-upload>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<!-- 取消按钮 -->
<el-button @click="dialogImportVisible = false">取消</el-button>
</div>
</el-dialog>
data() {
return {
list: [], // 数组字典列表
dialogImportVisible: false, // 对话框是否展示
listLoading: true
}
}
// 导入数据
importData() {
// 显示上传文件 对话框
this.dialogImportVisible = true
},
//上传成功
onUploadSuccess(response, file) {
this.$message.info('上传成功')
// 关闭弹框
this.dialogImportVisible = false
// 刷新页面
this.getDictList(1)
}
HttpRequestHelper
使用HttpRequestHelper发送请求,如果传入的数据是Json,需要JSONObject转换为 Json对象
JSONObject jsonObject = JSONObject.parseObject (data);
// 将请求参数封装为 map
Map<String, Object> paramMap = new HashMap<> ();
paramMap.put ("logoData", jsonObject.getString ("logoData"));
// 如果 获取的值还是json字符串,再次解析即可
JSONObject bookingRule = jsonObject.getJSONObject ("bookingRule");
paramMap.put ("bookingRule", bookingRule.toJSONString ());
// 发送请求,响应结果为JSONObject ,请求方式为Post
JSONObject respone = HttpRequestHelper.sendRequest (paramMap, this.getApiUrl () + "/api/hosp/saveHospital");
@PostMapping("saveHospital")
public Result saveHospital(HttpServletRequest request) {
// 解析 请求参数
Map<String, Object> paramMap = HttpRequestHelper.switchMap (request.getParameterMap ());
// 可以 将数据解析为 字符串,然后转为对象
String mapString = JSONObject.toJSONString (paramMap);
Hospital hospital = JSONObject.parseObject (mapString, Hospital.class);
return Result.ok ();
}
base64 编码传输的问题
// 传输过程中“+”转换为了“ ”,因此我们要转换回来
String logoDataString = (String) paramMap.get ("logoData");
if (!StringUtils.isEmpty (logoDataString)) {
String logoData = logoDataString.replaceAll (" ", "+");
paramMap.put ("logoData", logoData);
}
将一下的XXXXXX替换为加密的值即可
<img src="data:image/png;base64,XXXXXX"/>