PHPExcel边框被覆盖?

时间:2015-08-10 20:47:23

标签: php border phpexcel cells

我有一个创建PHPExcel文档的类。以下是我使用的样式。希望他们的名字相当明显。

private $default_style = array(
    'font' => array(
        'name' => 'Verdana',
        'color' => array('rgb' => '000000'),
        'size' => 11
    ),
    'alignment' => array(
        'horizontal' => PHPExcel_Style_Alignment::HORIZONTAL_CENTER,
        'vertical' => PHPExcel_Style_Alignment::VERTICAL_CENTER
    ),
    'borders' => array(
        'allborders' => array(
            'style' => PHPExcel_Style_Border::BORDER_THIN,
            'color' => array('rgb' => 'AAAAAA')
        )
    )
);

private $title_style = array(
    'font' => array(
        'bold' => true
    ),
    'fill' => array(
        'type' => PHPExcel_Style_Fill::FILL_SOLID,
        'startcolor' => array('rgb' => '5CACEE')
    ),
    'alignment' => array(
        'wrap' => true
    ),
    'borders' => array(
        'allborders' => array(
            'style' => PHPExcel_Style_Border::BORDER_THIN,
            'color' => array('rgb' => 'AAAAAA')
        )
    )
);


private $new_swap_style = array(
    'font' => array(
        'bold' => true
    ),
    'fill' => array(
        'type' => PHPExcel_Style_Fill::FILL_SOLID,
        'startcolor' => array('rgb' => 'F9690E')
    ),
    'alignment' => array(
        'wrap' => true
    ),
    'borders' => array(
        'allborders' => array(
            'style' => PHPExcel_Style_Border::BORDER_THIN,
            'color' => array('rgb' => 'AAAAAA')
        )
    )
);

private $odd_row_style = array(
    'fill' => array(
        'type' => PHPExcel_Style_Fill::FILL_SOLID,
        'startcolor' => array('rgb' => 'CCCCCC')
    ),
    'borders' => array(
        'allborders' => array(
            'style' => PHPExcel_Style_Border::BORDER_THIN,
            'color' => array('rgb' => 'AAAAAA')
        )
    )
);

private $outline_border = array(
    'borders' => array(
        'outline' => array(
            'style' => PHPExcel_Style_Border::BORDER_THICK,
            'color' => array('rgb' => '676767')
        )
    )
);

private $right_border = array(
    'borders' => array(
        'right' => array(
            'style' => PHPExcel_Style_Border::BORDER_THICK,
            'color' => array('rgb' => '676767')
        )
    )
);

我使用这段代码应用odd_row_style

if ($key % 2 != 0) {
    $as->getStyle('A'.$row.':'.$last_col.$row)
       ->applyFromArray($this->odd_row_style);
}

除此之外,我应用的唯一其他样式是outline_borderright_border样式。它们应用于数据I的末尾,如下所示:

// $row equals the last row after the data is looped through
$as->getStyle('D3:H'.($row))->applyFromArray($this->outline_border);
$as->getStyle('E3:E'.($row))->applyFromArray($this->right_border);

出于某种原因,default_style中的边框被覆盖,但在我添加outline_borderright_border样式时会再次应用。

在第10行和第11行的屏幕截图中可以更清楚地看到它们。您可以看到它们之间没有边框,因此灰色行会啮合在一起。但是,边界适用于"新"标题在同一行。

enter image description here

我尝试在添加default_styleoutline_border样式之前再次添加right_border,但没有运气。

提前感谢您的帮助!

更新

我已经意识到,当我将odd_row_style设置为一行时,填充单元格颜色会覆盖边框,即使我已重新包含边框默认值。无论细胞是否具有价值,似乎都这样做。参见上图中的单元格F10:G11(值)和A10:C11(无值)。

甚至更奇怪的是,当我将default_style应用于整个工作表时,所有内容的边框颜色都为#c1c1c1,而不是我试图设置它们的#aaaaaa

如果有人可以帮忙的话,这让我感到疯狂!

1 个答案:

答案 0 :(得分:0)

出于某种原因,使用->getDefaultStyle()->applyFromArray()方法设置边框样式会让一切都不合时宜。如果我通过输入一个或多个单元格使用->getStyle()->applyFromArray()显式设置单元格,它将按预期工作。我不确定这是预期的结果还是错误,但我在他们的github上打开了一个问题。随意跟踪它here