[alibaba/easyexcel]CSV写入时自定义Timestamp转换器无效

2023-03-16 645 views
0

image image

注册的自定义转换器会被构建成null,导致csv默认类型string去map获取找不到自定义,DefaultConverterLoader内目前没有支持Timestamp,求大佬提供个解决方式

回答

9

你在Excelproperty里面指定转换器就可以呀

5

你在Excelproperty里面指定转换器就可以呀

image 您说的是registerConverter吗?

7

是你的实体,指定

6

write方法的第二个参数

3

是你的实体,指定

我write是文件,没有实体类

9

你的数据是哪来的 没有实体类吗

5

你的数据是哪来的 没有实体类吗

我的场景是动态头写入,没有指定实体的写

6

贴能复现的代码和预期的样子

1

贴能复现的代码和预期的样子

`@Test public void test() {

    Map<String, Object> oneMap = new HashMap<>();
    oneMap.put("timestamp", new Timestamp(System.currentTimeMillis()));

    List<List<String>> titles = new ArrayList<>();
    List<List<Object>> rowData = new ArrayList<>();

    oneMap.forEach((k, v) -> {
        List<String> kList = new ArrayList<>();
        List<Object> vList = new ArrayList<>();

        kList.add(k);
        vList.add(v);

        titles.add(kList);
        rowData.add(vList);
    });

    File file = new File("test.csv");
    try {
        if(!file.exists()) {
            System.out.println(file.createNewFile());
        }

        EasyExcel.write(file)
                .excelType(ExcelTypeEnum.CSV)
                .charset(StandardCharsets.UTF_8)
                .head(titles)
                .sheet()
                .doWrite(rowData);

    } catch (Exception e) {
        System.out.println(e.getMessage());
    } finally {
        file.deleteOnExit();
    }
}`

预期结果:成功写入

8

嗯。。。 这是个bug。 目前的解决办法是推荐用实体或者你用反射把转换器塞进去... 下版本会改掉