导入导出 下载模板

/*

* 导入功能

* */

@PostMapping("/import") //excel/upload

@ResponseBody

public Object importExcel(@RequestParam("file") MultipartFile file) {

ImportParams params = new ImportParams();

//从第一行开始解析

params.setHeadRows(1);

try {

//1.读取execl

List<DepartDto> departs = ExcelImportUtil.importExcel(file.getInputStream(), DepartDto.class,params);

log.info("list:{}", departs.size());

System.out.println("------>打印------>");

for (int i = 0; i < departs.size(); i++){

//execl查出的数据

DepartDto mydepart = departs.get(i);

System.out.println(mydepart);

//判断父部门是否存在

Depart depart = departService.queryByParentDepartment(mydepart.getParentDepartment());

if(depart!=null){

//表明父部门已存在,放到对应的部门

//获取找到的父部门对应的id

String id = String.valueOf(depart.getId());

departService.insertOne(mydepart);

departService.updateByIds(id,mydepart.getName());

}else{

//父不存在,放到默认的部门

//2.添加

departService.insertOne(mydepart);

departService.updateByParentDepartment(mydepart.getName());

}

}

} catch (Exception e) {

e.printStackTrace();

log.error("解析Excel异常{"+e.getMessage()+"}");

return ResultJson.error("解析Excel异常");

}

return ResultJson.success();

}

/*

*

* 导出功能

* */

@GetMapping("export")

public void exportExcel(HttpServletResponse response) throws Exception {

//查询部门所有信息

List<SysDepart> sysDeparts = sysDepartService.queryAll();

//建立一个空的集合

List<DepartVo> list=new ArrayList<>();

//遍历查出来的sysDeparts

for(int i=0;i<sysDeparts.size();i++){

//一一获取查出来的对象

SysDepart sysDepart = sysDeparts.get(i);

//创建对象

DepartVo depart = new DepartVo();

//将查询出来的进行复制

depart.setId(sysDepart.getId());

depart.setName(sysDepart.getName());

depart.setAddress(sysDepart.getAddress());

depart.setPhone(sysDepart.getPhone());

depart.setParentId(sysDepart.getParentId());

depart.setCreateDate(sysDepart.getCreateDate());

depart.setCreateName(sysDepart.getCreateName());

depart.setUpdateDate(sysDepart.getUpdateDate());

depart.setUpdateName(sysDepart.getUpdateName());

depart.setRemark(sysDepart.getRemark());

list.add(depart);

}

// 根据时间戳生成表格名称

String fileName = System.currentTimeMillis()+".xls";

// 导出的表格title和sheet页名

ExportParams exportParams = new ExportParams(null, "sheet");

// 传参是要转换的对象类型,和list

Workbook workbook = ExcelExportUtil.exportExcel(exportParams, DepartVo.class, list);

if (workbook != null) {

//list转excel 返回文件流

try {

response.setCharacterEncoding("UTF-8");

response.setHeader("content-Type", "application/vnd.ms-excel");

response.setHeader("Content-Disposition",

"attachment;filename=" + URLEncoder.encode(fileName, "UTF-8").replaceAll("\\+", "%20"));

workbook.write(response.getOutputStream());

} catch (Exception e) {

log.error("Excel导出异常{"+e.getMessage()+"}");

throw new ServiceException("Excel导出异常");

} finally {

workbook.close();

}

}

}

private static final String templateExcel = "ImportUsers.xlsx";

/**

* 下载模板 导出的模板在 根目录下

* @param response

*/

@GetMapping("/download")

@SneakyThrows

public void getTemplate(HttpServletResponse response){

File file = ResourceUtils.getFile(this.getClass().getResource("/")+ FILE_PATH_TEMPLATE+templateExcel);

String filedisplay = URLEncoder.encode("ImportUsers.xlsx","utf-8");

//web项目,1、设置下载框的弹出(设置response相关参数);2、通过httpservletresponse.getOutputStream()获取

//设置下载弹框,设置下载文件名

response.setContentType("application/vnd.ms-excel;charset=utf-8");

response.setHeader("Content-Disposition", "attachment;filename="+filedisplay);

FileInputStream fileInputStream = new FileInputStream(file);

BufferedOutputStream bos = new BufferedOutputStream(response.getOutputStream());

byte[] buffer = new byte[2048];

int len;

while ((len = fileInputStream.read(buffer, 0, buffer.length)) != -1) {

bos.write(buffer, 0, len);

bos.flush();

}

if (fileInputStream != null) {

fileInputStream.close();

}

if (bos != null) {

bos.close();

}

}

模板类:

导出没测试

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值