EasyExcel 斜线表头

该文章描述了一次需求,如何在Java中利用阿里巴巴EasyExcel库,为Excel文件的表头添加斜线分割。作者展示了如何获取并设置单元格样式,以及创建和插入斜线形状的过程。
摘要由CSDN通过智能技术生成

平时做excel文件导出功能,都是一般的平常表头加上数据。

学号姓名年龄成绩
100001张三1299

但是最近一个需求需要将表头的第一个单元画出斜线分割。

看到需求的第一想法,就是找到Cell单元格对象,然后设置单元格的样式。

由于原始代码使用阿里巴巴的EasyExcel组件,于是参考资料写Excel | Easy Excel

 本次项目依赖为

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>easyexcel</artifactId>
    <version>3.3.2</version>
</dependency>

public void test() {
        File file = new File("test"+System.currentTimeMillis()+".xlsx");
        EasyExcel.write(file).autoCloseStream(true)
                .registerWriteHandler(new CellWriteHandler() {
                    @Override
                    public void afterCellDispose(CellWriteHandlerContext context) {
                        Cell cell = context.getCell();
                        if (cell.getRowIndex() == 0 && cell.getColumnIndex() == 0) {
                            // 获取A1单元格
                            WriteCellData<?> cellData = context.getFirstCellData();
                            // 这里需要去cellData 获取样式
                            // 很重要的一个原因是 WriteCellStyle 和 dataFormatData绑定的 简单的说 比如你加了 DateTimeFormat
                            // ,已经将writeCellStyle里面的dataFormatData 改了 如果你自己new了一个WriteCellStyle,可能注解的样式就失效了
                            // 然后 getOrCreateStyle 用于返回一个样式,如果为空,则创建一个后返回
                            WriteCellStyle writeCellStyle = cellData.getOrCreateStyle();
                            writeCellStyle.setHorizontalAlignment(HorizontalAlignment.LEFT);
                            writeCellStyle.setFillBackgroundColor((short) 1);
                            // 这样样式就设置好了 后面有个FillStyleCellWriteHandler 默认会将 WriteCellStyle 设置到 cell里面去 所以可以不用管了

                            SXSSFSheet sheet = (SXSSFSheet) cell.getSheet();
                            sheet.setColumnWidth(0, 15 * 256);

                            sheet.createDrawingPatriarch();
                            XSSFDrawing drawingPatriarch = sheet.getDrawingPatriarch();
                            XSSFClientAnchor anchor = drawingPatriarch.createAnchor(0, 0, 0, 0, 0, 0, 1, 1);
                            XSSFSimpleShape simpleShape = drawingPatriarch.createSimpleShape(anchor);
                            simpleShape.setShapeType(ShapeTypes.LINE);
                            simpleShape.setLineWidth(0.5);
                            simpleShape.setLineStyle(0);
                            simpleShape.setLineStyleColor(0, 0, 0);
                        }
                    }
                }).excelType(ExcelTypeEnum.XLSX)
                .sheet("testline")
                .head(head())
                .doWrite(new ArrayList<>());
    }

    private List<List<String>> head() {
        List<List<String>> head = new ArrayList<>();
        head.add(ListUtils.newArrayList("      成绩\n班级"));
        head.add(ListUtils.newArrayList("优秀"));
        head.add(ListUtils.newArrayList("良好"));
        head.add(ListUtils.newArrayList("合格"));
        return head;
    }

 最终效果:

  • 14
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值