用ResponseEntity导出EXCEL

直接上代码

gradle依赖
//hadoop
compile("org.apache.hadoop:hadoop-client:3.3.1")
附上使用的依赖
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.metadata.Sheet;
import com.alibaba.excel.support.ExcelTypeEnum;
import org.springframework.data.domain.Page;
import org.springframework.data.web.PageableDefault;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import java.io.ByteArrayOutputStream;
controller层
    @GetMapping(value = "URL")
    public ResponseEntity<byte[]> downTerminalFileHdfs(@PageableDefault SimPageable pageable)
    {
        pageable.setPage(1);
        pageable.setSize(Integer.MAX_VALUE);
        //获取实体类对象
        Page<Sim> page = simService.findPage(pageable);
        //放入excel对象的list
        List<SimExportExcelModel> list = new ArrayList<>();

        for (Sim sim : page.getContent())
        {
            list.add(new SimExportExcelModel(sim));
        }

        ByteArrayOutputStream out = new ByteArrayOutputStream();
        Sheet sheet = new Sheet(1, 0, SimExportExcelModel.class);
        //设置分页名
        sheet.setSheetName("sheet1");
        sheet.setAutoWidth(Boolean.TRUE);

        ExcelWriter writer = new ExcelWriter(out, ExcelTypeEnum.XLSX, true);
        writer.write(list, sheet);
        writer.finish();

//        //这种和下面创建返回对象效果一样,均可以使用
//        HttpHeaders headers = new HttpHeaders();
//        headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
//        //excelTest.xlsx是导出文件名,测试写死
//        headers.setContentDispositionFormData("attachment", "excelTest.xlsx");
//        ResponseEntity<byte[]> responseEntity = new ResponseEntity<byte[]>(out.toByteArray(), headers, HttpStatus.OK);

        HttpHeaders headers = new HttpHeaders();
        //excelTest.xlsx是导出文件名,测试写死
        headers.add("Content-Disposition", String.format("attachment;filename=%s",
                                                         "excelTest.xlsx"));
        headers.add("Cache-Control", "no-cache,no-store,must-revalidate");
        headers.add("Pragma", "no-cache");
        headers.add("Expires", "0");
        ResponseEntity<byte[]> responseEntity = ResponseEntity.ok()
                .headers(headers)
                .contentLength(out.toByteArray().length)
                .contentType(MediaType.parseMediaType("application/octet-stream"))
                .body(out.toByteArray());

        return responseEntity;
    }
EXCEL对象
@Data
public class SimExportExcelModel extends BaseRowModel
{

    @ExcelProperty(value = "XX", index = 0)
    public String createdAt;

    @ExcelProperty(value = "XX", index = 1)
    public String iccid;

    @ExcelProperty(value = "XX", index = 2)
    public String terminalStatus = SimTerminalStatusItem.unProduced.getValue();

    @ExcelProperty(value = "XX", index = 3)
    public String statusItem;

    @ExcelProperty(value = "XX", index = 4)
    public String purposeItem;

    @ExcelProperty(value = "XX", index = 5)
    public String supplierItem;

    //创建构造防范
    public SimExportExcelModel(Sim sim)
    {
        //略
    }
}

以上

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容