[alibaba/easyexcel]如何清除表头的默认格式?

2024-04-26 612 views
4

使用 quick start 的示例生成 excel 文件,表头自带样式。点我查看表头样式

请问,生成的 excel 文件的表头不想要这些样式,如何清除?谢谢!!

测试代码如下:

@Data
static class DemoData {
    @ExcelProperty(value = "字符串标题", index = 0)
    private String string;

    /**
     * 我想写到excel 用年月日的格式
     */
    @DateTimeFormat("yyyy年MM月dd日HH时mm分ss秒")
    @ExcelProperty(value = "日期标题", index = 1)
    private Date   date;

    /**
     * 我想写到excel 用百分比表示
     */
    @NumberFormat("#.##%")
    @ExcelProperty(value = "数字标题", index = 2)
    private Double doubleData;
}

private static List<DemoData> data() {
    List<DemoData> objects = new ArrayList<>();
    for (int i = 0; i < 3; i++) {
        DemoData demoData = new DemoData();
        demoData.setString("string:" + i);
        demoData.setDate(new Date());
        demoData.setDoubleData((double) i);
        objects.add(demoData);
    }
    return objects;
}

public static void main(String[] args) throws IOException {
    String fileName =  "./repeatedWrite" + System.currentTimeMillis() + ".xlsx";

    ByteArrayOutputStream fos = new ByteArrayOutputStream(1024);

    // 这里 需要指定写用哪个class去读
    final ExcelWriter excelWriter = EasyExcel.write(fos, DemoData.class).build();
    // 这里 需要指定写用哪个class去读
    WriteSheet writeSheet = EasyExcel.writerSheet("模板").build();
    // 第一次写入会创建头
    excelWriter.write(data(), writeSheet);
    // 第二次写入会在上一次写入的最后一行后面写入
    excelWriter.write(data(), writeSheet);
    /// 千万别忘记finish 会帮忙关闭流
    excelWriter.finish();

    com.google.common.io.Files.write(fos.toByteArray(), new File(fileName));
}

回答

9

查看自定义样式 传入 null 即可

2

查看自定义样式 传入 null 即可

@zhuangjiaju 为啥默认值不是无样式呀?即默认导出 excel 时,Header 是没有样式的

5

我觉得 默认有样式更好看 就这么简单

9

可是,这默认样式,是真的丑呀!!

4

非常感谢您的意见。有更好的方案 可以直接提交PR。

4

查看自定义样式 传入 null 即可

@zhuangjiaju registerWriteHandler((WriteHandler) null) 传入 null 值么?这样导出文件表头仍然存在默认样式。

EasyExcel
.write(fileName, DemoData.class)
.registerWriteHandler((WriteHandler) null)
.sheet("模板")
.doWrite(data());
9

这个issue没看懂,在哪里传入 null

5

可以使用useDefaultStyle方法设置 EasyExcel.write(fileName, DemoData.class).useDefaultStyle(false).sheet("模板").doWrite(data());

1

可以使用useDefaultStyle方法设置 EasyExcel.write(fileName, DemoData.class).useDefaultStyle(false).sheet("模板").doWrite(data());

大佬,这个设置了false导出的表头还是有样式

3

可以使用useDefaultStyle方法设置 EasyExcel.write(fileName, DemoData.class).useDefaultStyle(false).sheet("模板").doWrite(data());

大佬,这个设置了false导出的表头还是有样式

3.0.5版本 可以生效啊