美文网首页
easyexcel设置固定列宽

easyexcel设置固定列宽

作者: CXY_XZL | 来源:发表于2022-08-03 17:02 被阅读0次

1.引入依赖

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

2.设置列宽

public class AuditUnitLevelReportColumnHandler extends AbstractColumnWidthStyleStrategy {

    @Override
    protected void setColumnWidth(WriteSheetHolder writeSheetHolder, List<CellData> cellDataList, Cell cell, Head head, Integer integer, Boolean isHead) {
        boolean needSetWidth = isHead || !CollectionUtils.isEmpty(cellDataList);
        if (needSetWidth) {
            Sheet sheet = writeSheetHolder.getSheet();
            int columnIndex = cell.getColumnIndex();
            if (columnIndex == 1){
                //要求将当前列的列宽设置为33英寸,理论值应该是33×256=8448,
                //但是这里的设值是8648,具体原因请看下面的计算逻辑
                sheet.setColumnWidth(1,8648);
            }else if (columnIndex == 2){
                sheet.setColumnWidth(2,5576);
            }else {
                sheet.setColumnWidth(columnIndex,3016);
            }
        }
    }
}

setColumnWidth(i,j)函数中,i是列的下标,从0开始,j是列的宽度,单位是1/256个字符宽度,所以代码中要乘以256,两个参数都必须是整数

列宽计算逻辑:以下标为1的列的宽度计算逻辑说明下,正常情况下设置的列宽是33乘以256,但实际上我们生成的excel中列宽是32.22,因为字体样式、大小以及单元格边框等占用额外的像素,所以实际的列宽比代码中设置的列宽要小0.78英寸(excel中的列宽单位是英寸),代码中设置的33也是英寸单位,那么实际我们需要设置成33.78英寸,但33.78乘以256是Double类型的数值,setColumnWidth的第二个参数必须是整数,所以在33.78*256=8647.68的基础上向上取整为8648

也需要注意的是:我用的是office365版本的excel,而不同版本的excel以及字体、单元格边框设置等因素都会影响到excel最终的列宽,可能不是上面提到的0.78的误差值,所以大家需要根据自己的情况来更改这个误差值,不能直接把这个误差值照搬到自己的代码中。

相关文章

  • easyexcel设置固定列宽

    1.引入依赖 2.设置列宽 setColumnWidth(i,j)函数中,i是列的下标,从0开始,j是列的宽度,单...

  • 幼儿园订货打印设置

    设置列宽 ABCDEFG8121055828 如何设置列宽 鼠标到A - 右击 - 列宽 如何处理快速统一...

  • 表格神器bootstraptable

    使用 bootstraptable创建表格 一、初始化 1、HTML编写 引人css和js 定义表格,设置固定列宽...

  • stata调整变量格式

    将x1的列宽固定为10,小数点后取三位 将x1的列宽固定为10,有效数字取三位 将x1的列宽固定为10,采用科学计...

  • 固定列宽的多列布局

    多列布局是页面设计中常见需求,而且经常会指定某列有固定宽度,或者某列可以自适应等。针对这类需求,使用flex布局的...

  • android常见记录

    1:在相对布局中设置了固定宽高,如果又设置了在两个控件之间(toLeftOf,toRightOf),这个固定宽高就...

  • table设置固定宽高

    table设置固定宽高,给boder设置属性 默认情况给bt设置宽高,超出部分隐藏会没有效果,需要给table设置...

  • css常见布局(一)

    一、两列布局 一列定宽浮动,一列margin或者一列绝对定位,另一列设置margin,代码如下:1.定宽浮动 2....

  • Swift label 高度自适应

    label设置的属性要和你的label一致, 需要适应高度,宽度设置固定高度0, 适应宽 高度固定宽度0

  • QTableView固定某列宽 其他列宽自适应填充伸展

    注:列宽的设置需要放在setModel之后,否则会出现异常现象

网友评论

      本文标题:easyexcel设置固定列宽

      本文链接:https://www.haomeiwen.com/subject/xmfewrtx.html