[alibaba/easyexcel]不创建对象的写不能使用List<List>作为doWrite的返回类型

2024-05-21 481 views
4

异常代码

   private List<List<String>> head() {
        List<List<String>> lists = new ArrayList<>();
        List<String> head0 = new ArrayList<>();
        head0.add("单位");
        List<String> head1 = new ArrayList<>();
        head1.add("姓名");
        lists.add(head0);
        lists.add(head1);
        return lists;
    }
private List<List<Object>> data(List<Map<String, Object>> datas) {
        List<List<Object>> lists = new ArrayList<>();
        for (Map<String, Object> data : datas) {
            List<Object> list = new ArrayList<>();
            list.add(data.get("UNIT_NAME"));
            list.add(data.get("NAME"));
            lists.add(list);
        }
        return lists;
    }
@RequestMapping(value = "json/ExportExcel")
    public void jsonExportExcel(Search search, HttpServletResponse response) throws IOException {
        List<Map<String, Object>> maps = new ArrayList<>();
        response.setContentType("application/vnd.ms-excel");
        response.setCharacterEncoding("utf-8");
        String fileName = URLEncoder.encode(examPoint.getName() + "-" + examSeason.getName() + "-人员详细表", "UTF-8");
        response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
        EasyExcel.write(response.getOutputStream()).head(head()).sheet("人员信息").doWrite(data(maps));
    }

异常提示 使用不创建对象的写时发现data数据类型不能是List<List>,使用List<List>类型不会报错,但是导出的Excel没有数据,只能将返回类型修改为List<List> 建议描述

回答

8

@KINNNNNNG 没懂你的意思,而且你的代码里面是List<Map<String, Object>> maps = new ArrayList<>();这个本来也没有数据,导出来也不会有。

3

@KINNNNNNG 没懂你的意思,而且你的代码里面是List<Map<String, Object>> maps = new ArrayList<>();这个本来也没有数据,导出来也不会有。

数据问题:实际代码里是有的,但我放出来的代码里没有数据

我的意思是,在文档,不创建对象的写的Demo代码使用的数据类型是List<List\<Object>>,但在实际使用过程中,List<List\<Object>>的返回类型会导致生成的Excel为空,需要将List<List\<Object>>改为List<List\<String>>才能生成Excel

8

@KINNNNNNG “需要将List改为List才能生成Excel”这个是?

5

@KINNNNNNG “需要将List改为List才能生成Excel”这个是?

...没写好,需要转义才能显示,已经修改了,你可以再看一下