ตั้งค่าสีพื้นหลังของเซลล์ใน PHPExcel


93

วิธีตั้งค่าสีเฉพาะให้กับเซลล์ที่ใช้งานเมื่อสร้างเอกสาร XLS ใน PHPExcel


ฉันทำได้ด้วยวิธีแก้ปัญหาของ Muntashir Akon ดูด้านล่างด้วยคะแนนโหวต 33 (ตอนนี้)
LUISAO

คำตอบ:


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

ที่มา: http://bayu.freelancer.web.id/2010/07/16/phpexcel-advanced-read-write-excel-made-simple/


5
นี่เป็นไวยากรณ์ที่ไม่ถูกต้อง ณ วันที่ 2013-10-17 ฉันได้แก้ไขเพื่อให้สอดคล้องกับไวยากรณ์ที่ถูกต้อง
Matt Humphrey

วิธีตั้งค่าสีพื้นหลังในไลบรารี 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');

ป้อนคำอธิบายภาพที่นี่


6
ฟังก์ชั่นของคุณใช้ได้ แต่คุณใช้งานทั่วโลกและนั่นเป็นข้อผิดพลาดจริง ... คุณควรใช้ประโยชน์จากคุณสมบัติ PHP5 คุณสามารถลองใช้ฟังก์ชัน lambda แทนเช่นeval.in/39136 :)
Cito

36

รหัสนี้ควรได้ผลสำหรับคุณ:

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

applyFromArrayแต่ถ้าคุณรำคาญใช้มากกว่านี้และอีกครั้งผมขอแนะนำให้ใช้


วิธีนี้ใช้ได้ผลสำหรับฉัน ฉันลองใช้ applyFromArray แต่ไม่มีอะไรเกิดขึ้น
LUISAO

11

มันทำงานตลอดเวลา!

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


2
ในบางเวอร์ชัน php ไม่สามารถแตกไลน์ที่คลาสแอตทริบิวต์ได้ เวอร์ชั่นเก่า.
Rogerio de Moraes

3
สำคัญ! กว่า $ objPHPExcel เช่น $ sheet เป็นการกำหนดจากคลาสอ็อบเจ็กต์ PHPExcel คุณต้องใช้เหมือนที่คุณสร้างอินสแตนซ์ (ที่ PHPExcel ใหม่ () กำหนด)
Rogerio de Moraes

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

10

ดูเหมือนว่ามีข้อบกพร่องด้วย applyFromArrayตอนนี้ที่ไม่ยอมรับสี แต่สิ่งนี้ใช้ได้กับฉัน:

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

1
แม้ว่าจะเป็นโซลูชันที่หรูหรากว่า (เนื่องจากฉันชอบวิธี OOP) แต่ก็ไม่ได้ผลสำหรับฉัน: / Used @ user198003 ให้วิธีแก้ปัญหา
Aurimas

6

นี่คือวิธีที่คุณทำในPHPSpreadsheetเวอร์ชันล่าสุดของPHPExcel

$spreadsheet = new Spreadsheet();

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

แนวทางอื่น:

$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

คุณสามารถใช้สีบนเซลล์และแถวได้อย่างง่ายดาย

$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'); 
});
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.