Đặt màu ô nền trong PHPExcel


93

Làm cách nào để đặt màu cụ thể cho ô hiện hoạt khi tạo tài liệu XLS trong PHPExcel?


Tôi hoàn thành nó với giải pháp của Muntashir Akon. Xem bên dưới với 33 phiếu bầu (ngay bây giờ).
LUISAO

Câu trả lời:


146
$sheet->getStyle('A1')->applyFromArray(
    array(
        'fill' => array(
            'type' => PHPExcel_Style_Fill::FILL_SOLID,
            'color' => array('rgb' => 'FF0000')
        )
    )
);

Nguồn: http://bayu.freelancer.web.id/2010/07/16/phpexcel-advanced-read-write-excel-made-simple/


5
Đây là cú pháp không chính xác kể từ ngày 10 tháng 10 năm 2013. Tôi đã chỉnh sửa để phản ánh đúng cú pháp.
Matt Humphrey

Cách đặt màu nền trong thư viện Excel Laravel?
OPV

83
function cellColor($cells,$color){
    global $objPHPExcel;

    $objPHPExcel->getActiveSheet()->getStyle($cells)->getFill()->applyFromArray(array(
        'type' => PHPExcel_Style_Fill::FILL_SOLID,
        'startcolor' => array(
             'rgb' => $color
        )
    ));
}

cellColor('B5', 'F28A8C');
cellColor('G5', 'F28A8C');
cellColor('A7:I7', 'F28A8C');
cellColor('A17:I17', 'F28A8C');
cellColor('A30:Z30', 'F28A8C');

nhập mô tả hình ảnh ở đây


6
Các chức năng của bạn không sao cả, nhưng bạn đang sử dụng global, và đó là một lỗi thực sự ... Bạn nên sử dụng các tính năng PHP5. Thay vào đó, bạn có thể thử một hàm lambda chẳng hạn như eval.in/39136 :)
Cito

35

Mã này sẽ phù hợp với bạn:

 $PHPExcel->getActiveSheet()
        ->getStyle('A1')
        ->getFill()
        ->setFillType(PHPExcel_Style_Fill::FILL_SOLID)
        ->getStartColor()
        ->setRGB('FF0000')

Nhưng nếu bạn bận tâm sử dụng cái này nhiều lần, tôi khuyên bạn nên sử dụng applyFromArray.


Giải pháp này đã làm việc cho tôi. Tôi thử applyFromArray, nhưng không có gì xảy ra.
LUISAO

11

Điều này luôn chạy!

$sheet->getActiveSheet()->getStyle('A1')->getFill()->getStartColor()->setRGB('FF0000');


2
Trong một số phiên bản php không thể ngắt dòng tại lớp thuộc tính. Phiên bản cũ.
Rogerio de Moraes

2
QUAN TRỌNG! Hơn $ objPHPExcel như $ sheet là một định nghĩa từ lớp đối tượng PHPExcel. Bạn cần sử dụng như bạn đã khởi tạo (tại new PHPExcel () xác định).
Rogerio de Moraes

$ objPHPExcel-> getActiveSheet () -> getStyle ('A'. $ row. ': G'. $ row) -> getFill () -> setFillType (PHPExcel_Style_Fill :: FILL_SOLID) -> getStartColor () -> setRGB (' FF0000 ');
Defkon1

10

Có vẻ như hiện tại có một lỗi applyFromArraykhông chấp nhận màu sắc, nhưng điều này đã hiệu quả với tôi:

$objPHPExcel
    ->getActiveSheet()
    ->getStyle('A1')
    ->getFill()
    ->getStartColor()
    ->setRGB('FF0000');

1
Mặc dù nó là giải pháp thanh lịch hơn (như tôi thích OOP chiều) nó không làm việc cho tôi: / Được sử dụng @ giải pháp user198003 cung cấp
Aurimas

6

Đây là cách bạn thực hiện trong PHPSpreadsheetphiên bản mới nhất củaPHPExcel

$spreadsheet = new Spreadsheet();

$spreadsheet->getActiveSheet()->getStyle('A1:F1')->applyFromArray([
    'fill' => [
            'fillType' => Fill::FILL_SOLID,
            'startColor' => [
                'argb' => 'FFDBE2F1',
            ]           
    ],
]);

cách tiếp cận khác:

$spreadsheet->getActiveSheet()
    ->getStyle('A1:F1')
    ->getFill()
    ->setFillType(Fill::FILL_SOLID)
    ->getStartColor()->setARGB('FFDBE2F1');

4
$objPHPExcel
->getActiveSheet()
->getStyle('A1')
->getFill()
->setFillType(PHPExcel_Style_Fill::FILL_SOLID)
->getStartColor()
->setRGB('colorcode'); //i.e,colorcode=D3D3D3



0

Bạn có thể dễ dàng áp dụng màu trên ô và hàng.

$sheet->cell(1, function($row) 
{ 
  $row->setBackground('#CCCCCC'); 
});

$sheet->row(1, ['Col 1', 'Col 2', 'Col 3']); 
$sheet->row(1, function($row) 
{ 
  $row->setBackground('#CCCCCC'); 
});
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.