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 @   站着说话不腰疼  阅读(6819)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示