我正在使用EasyExcel导出一个excel文件。
implementation group: 'com.alibaba', name: 'easyexcel', version: '2.2.3'这是我最简单的代码演示,控制器如下所示:
@Api
@RequestMapping("/illidan/report/game")
@FeignClient(name = "soa-illidan-service")
public interface IGameRecordController {
/**
* @return
*/
@GetMapping(value = "/export")
void export(HttpServletResponse httpServletResponse) throws IOException;
}这是实现:
@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时:
https://api.example.com/illidan-hub/illidan/report/game/export它不会在我的浏览器中弹出下载UI并返回401未授权。我正在删除代码,它在服务器上成功运行,没有错误输出。我该怎么做才能让它工作呢?这是DemoData类定义:
@Data
public class DemoData {
@ExcelProperty("string")
private String string;
@ExcelProperty("date")
private Date date;
@ExcelProperty("number")
private Double doubleData;
@ExcelIgnore
private String ignore;
}发布于 2020-05-22 00:14:37
在阅读github项目时,我找到了下载这个项目的方法。
在写入excel之前,您需要设置一些响应值。
@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());
}https://stackoverflow.com/questions/61935936
复制相似问题