使用easyexcel生成文件,下载文件示例
package com.harara.easyexcel.controller; import com.alibaba.excel.ExcelWriter; import com.alibaba.excel.metadata.Sheet; import com.alibaba.excel.support.ExcelTypeEnum; import com.harara.model.User; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.File; import java.io.FileInputStream; import java.io.OutputStream; import java.util.*; /** * 下载excel文件 demo * @author : harara * @version : 2.0 * @date : 2020/6/11 9:44 */ @RequestMapping("/excel") @RestController public class ExcelController { /** * 生成文件、下载文件 * @param request * @param response */ @GetMapping("/down.html") public void downloadExcel(HttpServletRequest request, HttpServletResponse response){ List<User> data = getExcelModelData(); OutputStream out = null; ExcelWriter excelWriter = null; try { out = response.getOutputStream(); //设置ConetentType CharacterEncoding Header,需要在excelWriter.write()之前设置 response.setContentType("mutipart/form-data"); response.setCharacterEncoding("utf-8"); response.setHeader("Content-disposition","attachment;filename=test.xlsx"); excelWriter = new ExcelWriter(out, ExcelTypeEnum.XLSX); Sheet sheet = new Sheet(0); sheet.setSheetName("sheet"); sheet.setClazz(data.get(0).getClass()); excelWriter.write(data,sheet); excelWriter.finish(); out.flush(); }catch (Exception e){ e.printStackTrace(); }finally { try { out.close(); }catch (Exception e){ e.printStackTrace(); } } } /** * 获取实体对象数据 * @return */ private List<User> getExcelModelData(){ List<User> users = new ArrayList<User>(); for(int i=0; i <= 10;i++){ User user = new User(); user.setName("name" + i); user.setAge("age" + i); user.setEmail("email" + i); user.setAddress("address" + i); user.setSax("sax" + i); user.setHeigh("heigh" + i); user.setLast("last" + i); user.setBitthday(new Date()); users.add(user); } return users; } }
User类:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
package com.harara.model; import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.metadata.BaseRowModel; import lombok.Data; import java.util.Date; /** * @author : harara * @version : 2.0 * @date : 2020/6/9 15:32 * 继承BaseRowModel */ @Data public class User extends BaseRowModel{ @ExcelProperty(value = "姓名", index = 0) private String name; @ExcelProperty(value = "年龄", index = 1) private String age; @ExcelProperty(value = "邮箱", index = 2) private String email; @ExcelProperty(value = "地址", index = 3) private String address; @ExcelProperty(value = "性别", index = 4) private String sax; @ExcelProperty(value = "高度", index = 5) private String heigh; @ExcelProperty(value = "备注", index = 6) private String last; @ExcelProperty(value = "生日",index = 7,format = "yyyy/MM/dd") private Date bitthday; }
在浏览器输入地址http://ip:port/excel/down.html,下载文件test.xlsx