excel打开时单元格宽度应该是按照字符宽度设置,excel跟随系统是用gbk编码,英文占1字符,汉字占2字符,开发环境一般都是utf-8,理论上获取单元格内容字符串的gbk字符长度,就是对应单元格最适应宽度。实测发现会这样设置单元格会有点紧,不适合观感不美观,所以在字符串长度上加2个字符长度,效果比较好。
$len = strlen(iconv('utf-8','gb2312',$str));
$obj->getActiveSheet()->getColumnDimension('A')->setWidth($len+2);