#精准计算Excel POI自动列宽度
相信大家做导出的时候,总有个需求就是把列宽度自动计算。但是POI的对中文和全角符号的支持又不好。这里刚好本人要做这个需求,就写出来了这个Utils,贴出来与大家分享。
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import java.io.UnsupportedEncodingException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* The type Poi width utils.
* 自适应列宽度工具类
*
* @author :<a href="mailto:450783043@qq.com">悟达</a>
* @date :2016-09-06 16:51:49
*/
public class POIWidthUtils {
//全角字符的正则表达式
public static final Pattern SBC_CASE_PATTERN = Pattern.compile("[^\\x00-\\xff]");
private static class WidthDescriptor {
int length;
int sbcCaseCount;
int byteLength;
public void determineSbcCaseCount(String value) {
if(StringUtils.isNotBlank(value)) {