【问题标题】:PHPExcel set border color of a cellPHPExcel设置单元格的边框颜色
【发布时间】:2015-07-03 10:03:22
【问题描述】:

如何设置单元格的边框颜色? 我使用了这段代码,但它不起作用:

$objPHPExcel->getActiveSheet()
                ->getStyle('A1')
                ->getBorders()
                ->getAllBorders()
                ->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN)
                ->getColor()
                ->setRGB('DDDDDD');

我知道applyFromArray() 工作正常。但我不想使用它。

【问题讨论】:

  • 您确定这不起作用吗?它对我有用。尝试使用更鲜明的颜色,例如“FC2323”...

标签: phpexcel


【解决方案1】:

有点晚了,但是记录一下,我发现这个语法很好用;

$ActiveSheet->getStyle("A1:Z1")->applyFromArray(
    array(
        'borders' => array(
            'allborders' => array(
                'style' => PHPExcel_Style_Border::BORDER_THIN,
                'color' => array('rgb' => 'DDDDDD')
            )
        )
    )
);

我还在这里找到了样式和属性的完整列表:http://www.bainweb.com/2012/01/phpexcel-style-reference-complete-list.html

【讨论】:

  • 也有点晚了,但在“allborders”中使用大写 B 对我有用 - 所有小写的“allborders”都没有......
【解决方案2】:

您可以在创建边框时将颜色应用于单元格边框。

定义样式:

$border_style= array('borders' => array('right' => array('style' => 
PHPExcel_Style_Border::BORDER_THICK,'color' => array('argb' => '766f6e'),)));

应用样式:

$sheet = $objPHPExcel->getActiveSheet();
$sheet->getStyle("A2:A40")->applyFromArray($border_style);

参考 PhpExcel 文档here

【讨论】:

  • 感谢您的回答。如果您看到文档,我的代码也应该可以工作,但事实并非如此。你有什么想法吗?
  • 您的代码也可以正常工作。正如@ejuhjav 所说,您是否尝试过其他颜色代码。因为 'DDDDDD' 在 Xls 中很难区分
  • 我也尝试设置边框,并根据文档,我得到了与问题几乎相同的代码,但我尝试使用颜色“FF0000”,但它对我不起作用,但 applyFromArray () 方法有效。这一定是 PHPExcel 中的一个错误。
  • @soger 更新到最新版本,还是不行。
【解决方案3】:

设置不带applyFromArray()的边框可以这样完成。

    $objPHPExcel->getActiveSheet()
                ->getStyle('A1')
                ->getBorders()
                ->getBottom()
                ->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);

    $objPHPExcel->getActiveSheet()
                ->getStyle('A1')
                -> getBorders()
                ->getLeft()
                ->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);

    $objPHPExcel->getActiveSheet()
                ->getStyle('A1')
                ->getBorders()
                ->getRight()
                ->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);

    $objPHPExcel->getActiveSheet()
                ->getStyle('A1')
                ->getBorders()
                ->getBottom()
                ->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);


边框样式列表是

BORDER_NONE - 'none'
BORDER_DASHDOT - 'dashDot'
BORDER_DASHDOTDOT - 'dashDotDot'
BORDER_DASHED - 'dashed'
BORDER_DOTTED - 'dotted'
BORDER_DOUBLE - 'double'
BORDER_HAIR - 'hair'
BORDER_MEDIUM - 'medium'
BORDER_MEDIUMDASHDOT - 'mediumDashDot'
BORDER_MEDIUMDASHDOTDOT - 'mediumDashDotDot'
BORDER_MEDIUMDASHED - 'mediumDashed'
BORDER_SLANTDASHDOT - 'slantDashDot'
BORDER_THICK - 'thick'
BORDER_THIN - 'thin'

了解更多PHPExcel

【讨论】:

    【解决方案4】:

    网站已关闭,因此这里是 PHPExcel 样式的完整列表:

    /* PHPExcel 对象 */

    /* Get the default Style object */
    (PHPExcel_Style) $style = ((PHPExcel) $excel)->getDefaultStyle()
    

    /* PHPExcel_Cell 对象 */

    /* Get the Style object for a Cell */
    (PHPExcel_Style) $style = ((PHPExcel) $excel)->getStyle('A1')
    

    /* 样式 */

    /* Apply new Style from array */
    $style->applyFromArray(
        array(
            'alignment' => array(
                'horizontal' =>
                    PHPExcel_Style_Alignment::HORIZONTAL_GENERAL           = 'general'
                    PHPExcel_Style_Alignment::HORIZONTAL_LEFT              = 'left'
                    PHPExcel_Style_Alignment::HORIZONTAL_RIGHT             = 'right'
                    PHPExcel_Style_Alignment::HORIZONTAL_CENTER            = 'center'
                    PHPExcel_Style_Alignment::HORIZONTAL_CENTER_CONTINUOUS = 'centerContinuous'
                    PHPExcel_Style_Alignment::HORIZONTAL_JUSTIFY           = 'justify'
                'vertical' =>
                    PHPExcel_Style_Alignment::VERTICAL_BOTTOM  = 'bottom'
                    PHPExcel_Style_Alignment::VERTICAL_TOP     = 'top'
                    PHPExcel_Style_Alignment::VERTICAL_CENTER  = 'center'
                    PHPExcel_Style_Alignment::VERTICAL_JUSTIFY = 'justify'
                'rotation' => (int)
                'wrap' => (boolean)
                'shrinkToFit' => (boolean)
                'indent' => (int)
            )
            'borders' => array(
                'allborders' => array(
                    'style' => 
                        PHPExcel_Style_Border::BORDER_NONE               = 'none';
                        PHPExcel_Style_Border::BORDER_DASHDOT            = 'dashDot';
                        PHPExcel_Style_Border::BORDER_DASHDOTDOT         = 'dashDotDot';
                        PHPExcel_Style_Border::BORDER_DASHED             = 'dashed';
                        PHPExcel_Style_Border::BORDER_DOTTED             = 'dotted';
                        PHPExcel_Style_Border::BORDER_DOUBLE             = 'double';
                        PHPExcel_Style_Border::BORDER_HAIR               = 'hair';
                        PHPExcel_Style_Border::BORDER_MEDIUM             = 'medium';
                        PHPExcel_Style_Border::BORDER_MEDIUMDASHDOT      = 'mediumDashDot';
                        PHPExcel_Style_Border::BORDER_MEDIUMDASHDOTDOT   = 'mediumDashDotDot';
                        PHPExcel_Style_Border::BORDER_MEDIUMDASHED       = 'mediumDashed';
                        PHPExcel_Style_Border::BORDER_SLANTDASHDOT       = 'slantDashDot';
                        PHPExcel_Style_Border::BORDER_THICK              = 'thick';
                        PHPExcel_Style_Border::BORDER_THIN               = 'thin';
                    'color' => array(
                        'rgb' =>
                            PHPExcel_Style_Color::COLOR_BLACK            = 'FF000000';
                            PHPExcel_Style_Color::COLOR_WHITE            = 'FFFFFFFF';
                            PHPExcel_Style_Color::COLOR_RED              = 'FFFF0000';
                            PHPExcel_Style_Color::COLOR_DARKRED          = 'FF800000';
                            PHPExcel_Style_Color::COLOR_BLUE             = 'FF0000FF';
                            PHPExcel_Style_Color::COLOR_DARKBLUE         = 'FF000080';
                            PHPExcel_Style_Color::COLOR_GREEN            = 'FF00FF00';
                            PHPExcel_Style_Color::COLOR_DARKGREEN        = 'FF008000';
                            PHPExcel_Style_Color::COLOR_YELLOW           = 'FFFFFF00';
                            PHPExcel_Style_Color::COLOR_DARKYELLOW       = 'FF808000';
                    )
    
                )
                'left' => // See 'allborders'
                'top' => // See 'allborders'
                'right' => // See 'allborders'
                'bottom' => // See 'allborders'
                'diagonal' =>
                'diagonaldirection' => 
            )
            'fill' => array(
                'type' =>
                    PHPExcel_Style_Fill::FILL_NONE                         = 'none';
                    PHPExcel_Style_Fill::FILL_SOLID                        = 'solid';
                    PHPExcel_Style_Fill::FILL_GRADIENT_LINEAR              = 'linear';
                    PHPExcel_Style_Fill::FILL_GRADIENT_PATH                = 'path';
                    PHPExcel_Style_Fill::FILL_PATTERN_DARKDOWN             = 'darkDown';
                    PHPExcel_Style_Fill::FILL_PATTERN_DARKGRAY             = 'darkGray';
                    PHPExcel_Style_Fill::FILL_PATTERN_DARKGRID             = 'darkGrid';
                    PHPExcel_Style_Fill::FILL_PATTERN_DARKHORIZONTAL       = 'darkHorizontal';
                    PHPExcel_Style_Fill::FILL_PATTERN_DARKTRELLIS          = 'darkTrellis';
                    PHPExcel_Style_Fill::FILL_PATTERN_DARKUP               = 'darkUp';
                    PHPExcel_Style_Fill::FILL_PATTERN_DARKVERTICAL         = 'darkVertical';
                    PHPExcel_Style_Fill::FILL_PATTERN_GRAY0625             = 'gray0625';
                    PHPExcel_Style_Fill::FILL_PATTERN_GRAY125              = 'gray125';
                    PHPExcel_Style_Fill::FILL_PATTERN_LIGHTDOWN            = 'lightDown';
                    PHPExcel_Style_Fill::FILL_PATTERN_LIGHTGRAY            = 'lightGray';
                    PHPExcel_Style_Fill::FILL_PATTERN_LIGHTGRID            = 'lightGrid';
                    PHPExcel_Style_Fill::FILL_PATTERN_LIGHTHORIZONTAL      = 'lightHorizontal';
                    PHPExcel_Style_Fill::FILL_PATTERN_LIGHTTRELLIS         = 'lightTrellis';
                    PHPExcel_Style_Fill::FILL_PATTERN_LIGHTUP              = 'lightUp';
                    PHPExcel_Style_Fill::FILL_PATTERN_LIGHTVERTICAL        = 'lightVertical';
                    PHPExcel_Style_Fill::FILL_PATTERN_MEDIUMGRAY           = 'mediumGray';
                'rotation' => (double)
                'startcolor' => // See 'borders' => 'allborders' => 'color'
                'endcolor' => // See 'borders' => 'allborders' => 'color'
                'color' => // See 'borders' => 'allborders' => 'color'
            ) 
            'font' => array(
                'name' =>
                    'Arial'
                    'Calibri'
                    // etc.
                'bold' => (boolean)
                'italic' => (boolean)
                'superScript' => (boolean)
                'subScript' => (boolean)
                'underline' => (boolean)
                'strike' => (boolean)
                'size' => (float)
                'color' => // See 'borders' => 'allborders' => 'color'
            )
            'numberformat' =>
            'protection' =>
        )
    )
    

    【讨论】:

      【解决方案5】:

      整个工作簿(所有工作表)的默认样式可以设置为:

      $objPHPExcel->getDefaultStyle()
          ->getBorders()
          ->getTop()
              ->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
      $objPHPExcel->getDefaultStyle()
          ->getBorders()
          ->getBottom()
              ->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
      $objPHPExcel->getDefaultStyle()
          ->getBorders()
          ->getLeft()
              ->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
      $objPHPExcel->getDefaultStyle()
          ->getBorders()
          ->getRight()
              ->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
      
      

      也可以设置为使用applyFromArray()

      $styleArray = array(
            'borders' => array(
                'allborders' => array(
                    'style' => PHPExcel_Style_Border::BORDER_THIN
                )
            )
        );
      $objPHPExcel->getDefaultStyle()->applyFromArray($styleArray);
      

      【讨论】:

      • 但问题是使用applyFromArray 设置单元格边框的颜色没有。这个答案并没有真正解决这个问题。
      猜你喜欢
      • 1970-01-01
      • 2011-10-10
      • 1970-01-01
      • 1970-01-01
      • 2016-02-11
      • 1970-01-01
      • 1970-01-01
      • 2011-08-18
      • 1970-01-01
      相关资源
      最近更新 更多