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;
}

浙公网安备 33010602011771号