引入依赖

<dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.1.0</version>
</dependency>

上传

文件上传入参为

@RequestPart MultipartFile file

具体实现:

   // 1.获取上传文件输入流try (InputStream inputStream = multipartFile.getInputStream()) {// 调用用 hutool 方法读取数据 默认调用第一个sheetExcelReader excelReader = ExcelUtil.getReader(inputStream);//忽略第一行头(第一行是中文的情况),直接读取表的内容List<List<Object>> list = excelReader.read(1);List<WorkPosition> workPositionList=new ArrayList<>();if(CollectionUtil.isEmpty(list)){return WebResponse.error(WebResponse.WARN_ERROE,"上传文件数据为空,请重新上传");} else {for (List<Object> row : list) {、、、、逻辑处理、、、、}//批量插入数据Integer count=workPositionMapper.insertList(workPositionList);if(count>0){return WebResponse.success("批量导入成功");}else{return WebResponse.error(WebResponse.CODE_ERROE,"数据导入失败");}}} catch (Exception e) {throw new RuntimeException("批量导入货位出错:" + e.getMessage());}}

下载

下载模板,(下载文件在项目中)

public void getWorkPositionExcelCase(HttpServletResponse response) throws IOException {//获取文件所在位置String path="file/";String fileName="导入货位模板.xls";// 清空输出流String resultFileName = fileName;resultFileName = URLEncoder.encode(resultFileName,"UTF-8");response.setCharacterEncoding("UTF-8");response.setHeader("Content-Disposition", "attachment;filename=" + resultFileName);// 设定输出文件头response.setContentType("application/msexcel");// 定义输出类型//输入流:文件路径DataInputStream in = new DataInputStream(new ClassPathResource(path+fileName).getInputStream());//输出流OutputStream out = response.getOutputStream();//输出文件int bytes = 0;byte[] bufferOut = new byte[1024];while ((bytes = in.read(bufferOut)) != -1) {out.write(bufferOut, 0, bytes);}out.close();in.close();}

下载文件,(hutool,代码生成文件形式)

public void getAllHandleExcel(GetWorkAoCodeVo getWorkAoCodeVo, HttpServletResponse response) {ExcelWriter writer = ExcelUtil.getWriter();List<WorkAoHandleVo> workAoHandleVos =workAoHandleMapper.getAllHandle(getWorkAoCodeVo);List<Map<String, Object>> rows = workAoHandleVos.stream().map(item -> {Map<String, Object> maps = new HashMap<>();String format = DateUtil.format(item.getCreateTime(), DatePattern.NORM_DATETIME_PATTERN);maps.put("createTime", format);maps.put("stationName", item.getStationName());maps.put("shelvesName", item.getShelvesName());maps.put("positionCode", item.getPositionCode());maps.put("aoNo", item.getAoNo());String handleName="";if(WorkConstant.LOW_FRAME.equals(item.getHandle())){handleName="下架";}else if(WorkConstant.UP_FRAME.equals(item.getHandle())){handleName="上架";}else{handleName="补货";}maps.put("handle", handleName);return maps;}).collect(Collectors.toList());//设置整体标题//标题占用表格长度int columns = 6;writer.merge(columns - 1, "AO上下架记录");//各个字段标题writer.addHeaderAlias("createTime", "时间");writer.addHeaderAlias("stationName", "工位缓存区");writer.addHeaderAlias("shelvesName", "所属货架");writer.addHeaderAlias("positionCode", "货位码");writer.addHeaderAlias("aoNo", "AO|架次号");writer.addHeaderAlias("handle", "操作内容");//设置各个writer.setColumnWidth(0, 30);writer.setColumnWidth(1, 30);writer.setColumnWidth(2, 30);writer.setColumnWidth(3, 30);writer.setColumnWidth(4, 30);writer.setColumnWidth(5, 30);writer.write(rows, true);response.setContentType("application/vnd.ms-excel;charset=utf-8");try {response.setHeader("Content-disposition", "attachment; filename=" + URLEncoder.encode("AO上下架记录-" + DateUtil.today() + ".csv", "utf-8"));} catch (UnsupportedEncodingException e) {e.printStackTrace();}ServletOutputStream out = null;try {out = response.getOutputStream();} catch (IOException e) {e.printStackTrace();}writer.flush(out, true);writer.close();IoUtil.close(out);}

java实现Excel文件上传下载(模板)-hutool相关推荐

  1. java实现excel文件上传_java相关:SpringMVC下实现Excel文件上传下载

    java相关:SpringMVC下实现Excel文件上传下载 发布于 2020-6-21| 复制链接 摘记: 在实际应用中,经常会遇到上传Excel或者下载Excel的情况,比如导入数据.下载统计数据 ...

  2. Box浅度接触-Java实现Box文件上传下载

    背景 Box(https://www.box.com/home)是定义为内容云,在我有限认知里面,感觉应该和云存储系统没啥区别.近日,有幸和Box做了一次浅度接触,颇为缠绵,记录在这里供有需要的朋友参 ...

  3. java中excel文件上传

    java文件上传 excel文件上传的两种方式 1.使用ExcelsUtils上传文件 2.把文件转换成流上传(支持多sheet) 代码实现 第一种方式 ExcelsUtils.ReadMultipa ...

  4. java实现excel文件上传并解析内容保存到数据库中

    基于struts框架的web项目中excel文件的上传导入到数据库中的java代码 原理:将要上传的文件已流的形式传到服务器,服务器中接收到文件数据流并生成文件到服务器指定位置,java解析服务器生成 ...

  5. Java Servlet实现文件上传下载操作

    1.配置对应的文件,导入相应的包 对应包下载地址:https://wws.lanzous.com/ipFtEoyv1je 2.编写jsp页面 代码如下: <%@ taglib prefix=&q ...

  6. java的图片文件上传下载,多表新增,菜品信息分页

    上传文件:表单要求 1,enctype="multipart/form-data" 2.表单中需要有type="file"的input 3.表单的请求方式一定是 ...

  7. Java实现多文件上传下载,kindeditor富文本保存为word文件,文件列表分页显示

    介绍 SpringBoot+Thymeleaf+Mybaits项目部分功能, 实现文件的多文件上传和下载,以及将kindeditor富文本内容保存为.doc文件 文件上传/创建后以列表形式显示,并且可 ...

  8. hibernate+servlet+mysql 实现easypoi_在Maven项目中使用easypoi完成Excel文件上传下载(示例代码)...

    导包: 1 2 3 cn.afterturn 4 easypoi-base 5 3.2.0 6 7 8 cn.afterturn 9 easypoi-web 10 3.2.0 11 12 13 cn. ...

  9. java ftp 下载慢_Java实现ftp文件上传下载解决慢中文乱码多个文件下载等问题

    废话不多说了,直接给大家贴代码了,具体代码如下所示: //文件上传 public static boolean uploadToFTP(String url,int port,String usern ...

最新文章

  1. python用sqlite数据库创建的表在哪里_用Python在sqlite3数据库中创建两个表
  2. 带你认识清华标杆课教师 | 卓晴:自带BGM的硬核“技术流”教师
  3. 过渡元素最外层电子数_元素周期表
  4. RDLC系列之六 打印纸张的大小(未解决)
  5. 洛谷 P4551 最长异或路径
  6. SAP Cloud for Customer的HTML Mashup渲染原理
  7. REVERSE-PRACTICE-BUUCTF-17
  8. struts框架搭建及validator示例
  9. 华为机试HJ73:计算日期到天数转换
  10. Kong API Gateway 配置文件详解
  11. 《Oracle 11g 数据库基础教程》读书笔记:
  12. 【GD32L233C-START】11、GD32 ISP软件还不支持GD32L233
  13. 网络工程初学者的学习方法及成长之路(红茶三杯)
  14. 区块链入门(一)------ 区块链简介(持续更新)
  15. 逃离北上广的“症结”
  16. 西工大机考《劳动与社会保障法》大作业网考
  17. k8s简单集群搭建和应用(包括虚拟机的开启)①
  18. win10monkey安装教程_详解win10下pytorch-gpu安装以及CUDA详细安装过程
  19. 华为智慧屏鸿蒙os系统体验,华为智慧屏S Pro体验:告诉你鸿蒙OS有多优秀?
  20. UE4 命令工具打包

热门文章

  1. 数据库题目 - 第二高的薪水
  2. Windows远程桌面连接报错【用户账户限制会阻止你登录】
  3. AD21常用规则设置
  4. java医院挂号代码_基于SSM开发的Java医院预约挂号系统 源码下载
  5. Redis 分布式事务实现
  6. redis中事务的控制
  7. iOS-NSDate 相差 8 小时
  8. 什么是接口幂等性?为什么会产生接口幂等性问题?如何保证接口幂等性?
  9. 智慧水务系统建设方案(污水处理、智慧防汛、智慧水务、智慧水利)
  10. 使用【宏】设置excel 下拉框可进行多选