首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >EasyExcel未弹出下载excel文件界面

EasyExcel未弹出下载excel文件界面
EN

Stack Overflow用户
提问于 2020-05-21 21:44:44
回答 1查看 60关注 0票数 1

我正在使用EasyExcel导出一个excel文件。

代码语言:javascript
复制
implementation group: 'com.alibaba', name: 'easyexcel', version: '2.2.3'

这是我最简单的代码演示,控制器如下所示:

代码语言:javascript
复制
@Api
@RequestMapping("/illidan/report/game")
@FeignClient(name = "soa-illidan-service")
public interface IGameRecordController {

    /**
     * @return
     */
    @GetMapping(value = "/export")
    void export(HttpServletResponse httpServletResponse) throws IOException;
}

这是实现:

代码语言:javascript
复制
 @Override
    public void export(HttpServletResponse response) throws IOException {
        EasyExcel.write(response.getOutputStream(), DemoData.class).sheet("bala").doWrite(data());
    }

    private List<DemoData> data() {
        List<DemoData> list = new ArrayList<DemoData>();
        for (int i = 0; i < 10; i++) {
            DemoData data = new DemoData();
            data.setString("bala" + i);
            data.setDate(new Date());
            data.setDoubleData(0.56);
            list.add(data);
        }
        return list;
    }

但是当我使用这个url下载excel时:

代码语言:javascript
复制
https://api.example.com/illidan-hub/illidan/report/game/export

它不会在我的浏览器中弹出下载UI并返回401未授权。我正在删除代码,它在服务器上成功运行,没有错误输出。我该怎么做才能让它工作呢?这是DemoData类定义:

代码语言:javascript
复制
@Data
public class DemoData {
    @ExcelProperty("string")
    private String string;
    @ExcelProperty("date")
    private Date date;
    @ExcelProperty("number")
    private Double doubleData;

    @ExcelIgnore
    private String ignore;
}
EN

回答 1

Stack Overflow用户

发布于 2020-05-22 00:14:37

在阅读github项目时,我找到了下载这个项目的方法。

在写入excel之前,您需要设置一些响应值。

代码语言:javascript
复制
@GetMapping("download")
public void download(HttpServletResponse response) throws IOException {
    response.setContentType("application/vnd.ms-excel");
    response.setCharacterEncoding("utf-8");
    String fileName = URLEncoder.encode("bala", "UTF-8");
    response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
    EasyExcel.write(response.getOutputStream(), DemoData.class).sheet("bala").doWrite(data());
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61935936

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档