【问题标题】:PHPExcel borders being overridden?PHPExcel 边框被覆盖?
【发布时间】:2015-08-10 20:47:22
【问题描述】:

我有一个创建 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 样式。它们应用在我循环的数据的末尾,如下所示:

// $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 行的屏幕截图中更明显。您可以看到它们之间没有边界,因此灰色的行网格在一起。但是,边框会在同一行的“新建”标题下正确应用。

我尝试在添加 outline_borderright_border 样式之前再次添加 default_style,但没有成功。

提前感谢您的帮助!

更新

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

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

这让我发疯了,如果有人可以帮忙!

【问题讨论】:

    标签: php border phpexcel cells


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2019-04-26
      • 2011-11-09
      • 2012-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多