2、XSSFWorkbook增加自适应宽度

XSSFWorkbook增加自适应宽度

1、先设置垂直居中和水平居中

XSSFCellStyle style = workbook.createCellStyle();
style.setAlignment(HorizontalAlignment.CENTER);
style.setVerticalAlignment(VerticalAlignment.CENTER);

2、根据表头字节长度设置宽度

i为index

自适应宽度(不同环境效果不一样)

sheet.autoSizeColumn(i);//对合并表头不生效
sheet.autoSizeColumn(i, true);//对合并表头生效

根据字节长度宽度自适应

// 根据字段长度自动调整列的宽度
//sheet.autoSizeColumn(i, true);
//根据表头的字节长度*256
String cellValueStr = (String) cellValue;
if (StringUtils.isNotEmpty(cellValueStr)){
	sheet.setColumnWidth(i,cellValueStr.getBytes().length*256);
}

3、增加获取正确宽度的方法

调用

sheet.setColumnWidth(i,getStrLength(cellValueStr)*256);

获取正确的宽度

    /**
     * 获取正确字符的长度
     * @param str
     * @return
     */
    private static int getStrLength(String str){
        if(StringUtils.isEmpty(str)){
            return 0;
        }
        //中文匹配
        Pattern pattern = Pattern.compile("[\u4e00-\u9fa5]");
        int lengthPtn = 0;
        int lengthNOtPtn = 0;
        char[] array = str.toCharArray();

        for (int i = 0; i < array.length; i++) {
            Matcher matcher = pattern.matcher(String.valueOf(array[i]));
            if (matcher.matches()){
                lengthPtn++;
            }
        }
        lengthNOtPtn = array.length-lengthPtn;
        return lengthPtn*3+lengthNOtPtn*2;
    }
posted @ 2022-11-23 09:41  站着说话不腰疼  阅读(7120)  评论(0)    收藏  举报