我有一个创建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_border
和right_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_border
和right_border
样式时会再次应用。
在第10行和第11行的屏幕截图中可以更清楚地看到它们。您可以看到它们之间没有边框,因此灰色行会啮合在一起。但是,边界适用于"新"标题在同一行。
我尝试在添加default_style
和outline_border
样式之前再次添加right_border
,但没有运气。
提前感谢您的帮助!
我已经意识到,当我将odd_row_style
设置为一行时,填充单元格颜色会覆盖边框,即使我已重新包含边框默认值。无论细胞是否具有价值,似乎都这样做。参见上图中的单元格F10:G11(值)和A10:C11(无值)。
甚至更奇怪的是,当我将default_style
应用于整个工作表时,所有内容的边框颜色都为#c1c1c1
,而不是我试图设置它们的#aaaaaa
。
如果有人可以帮忙的话,这让我感到疯狂!
答案 0 :(得分:0)
出于某种原因,使用->getDefaultStyle()->applyFromArray()
方法设置边框样式会让一切都不合时宜。如果我通过输入一个或多个单元格使用->getStyle()->applyFromArray()
显式设置单元格,它将按预期工作。我不确定这是预期的结果还是错误,但我在他们的github上打开了一个问题。随意跟踪它here。