phpExcel不会将列宽设置为auto

时间:2015-06-24 14:33:44

标签: html phpexcel

我正在使用phpExcel构建一个excel文件。我填写了我需要的所有单元格,最后我在excel文件上设置了一些格式。我正在做的一件事是调整单元格宽度,但我得到一个奇怪的结果。没有列设置为正确的宽度。一些设置为更大的宽度,另一个设置为原始宽度。我不在任何地方使用粗体字体,而是在第一行使用一些背景颜色。 这是我实际的格式化代码:

$header = 'A1:EK1';
$ews->getStyle($header)->getFill()->setFillType(\PHPExcel_Style_Fill::FILL_SOLID)->getStartColor()->setARGB('ff00008b');
$style = array(
    'font' => array('bold'  => false,
        'color' => array('rgb' => 'FFFFFF'),
        'size'  => 12,
        'name'  => 'Verdana'),
    'alignment' => array('horizontal' => \PHPExcel_Style_Alignment::HORIZONTAL_CENTER,),
    );
$ews->getStyle($header)->applyFromArray($style);
for ($col = ord('A'); $col <= ord('HK'); $col++)
{
    $ews->getColumnDimension(chr($col))->setAutoSize(true);
}

我已经看了很多关于SO的问题并且搜索了一下但我发现只有csv文件(我的是xlsx)或粗体字体(我根本没有)的问题。由于我仍然在学习这个库是如何工作的,我正在寻找一些帮助

2 个答案:

答案 0 :(得分:1)

如果某列设置为AutoSize,则PHPExcel会尝试根据列的计算值(以及任何公式的结果)计算列宽,以及通过格式掩码(例如千位分隔符)添加的任何其他字符。

默认情况下,这是estimated宽度:基于使用GD,可以使用更准确的计算方法,GD也可以处理字体样式功能,如粗体和斜体;但这是一个更大的开销,因此它默认关闭。您可以使用

启用更准确的计算
PHPExcel_Shared_Font::setAutoSizeMethod(PHPExcel_Shared_Font::AUTOSIZE_METHOD_EXACT);

但是,自动调整大小并不适用于所有Writer格式... CSV文件不支持任何格式,只支持数据,因此在编写CSV文件时无法应用列宽(格式化)

答案 1 :(得分:0)

$ objPHPExcel-> getActiveSheet()-> getColumnDimension(COLUMN)-> setAutoSize(true);