使用easyexcel生成文件,下载文件示例

 

使用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类:

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;

}
View Code

 

在浏览器输入地址http://ip:port/excel/down.html,下载文件test.xlsx

 

posted @ 2020-06-11 14:09  harara  阅读(7434)  评论(0编辑  收藏  举报