PHPExcel - 如何使用 phpexcel 库更改图表的颜色、边框和背景

作者:编程家 分类: excel 时间:2025-10-05

使用PHPExcel库可以很方便地修改Excel文件中图表的颜色、边框和背景。通过PHP脚本,我们可以对图表进行各种自定义设置,使其更加美观和易于理解。下面将介绍如何通过PHPExcel库实现对图表的颜色、边框和背景的修改,并给出相应的代码示例。

修改图表颜色

要修改图表的颜色,首先需要获取到图表对象,然后通过设置对应的属性来改变颜色。以下是一个简单的示例代码,演示了如何修改图表的颜色:

php

// 导入PHPExcel库

require_once 'PHPExcel/PHPExcel.php';

// 创建一个新的Excel对象

$objPHPExcel = new PHPExcel();

// 选择要操作的工作表

$objPHPExcel->setActiveSheetIndex(0);

$sheet = $objPHPExcel->getActiveSheet();

// 创建图表对象

$chart = new PHPExcel_Chart(

'chart1', // 图表的唯一ID

null, // 图表的标题

null, // 图表的标题样式

null, // 图表的X轴标签

null // 图表的Y轴标签

);

// 设置图表的数据系列

$chartSeries = new PHPExcel_Chart_DataSeries(

PHPExcel_Chart_DataSeries::TYPE_LINECHART, // 图表类型

PHPExcel_Chart_DataSeries::GROUPING_STANDARD // 图表数据分组方式

);

$chartSeries->setPlotDirection(PHPExcel_Chart_DataSeries::DIRECTION_COL); // 图表数据方向

$chartSeries->setPlotDirection(PHPExcel_Chart_DataSeries::DIRECTION_ROW); // 图表数据方向

$data = array(

array('Month', 'Sales', 'Expenses'),

array('Jan', 1000, 400),

array('Feb', 1200, 500),

array('Mar', 1400, 600),

array('Apr', 1600, 700),

array('May', 1800, 800)

);

$chartSeries->setCategoryLabels($data[0]); // 设置X轴标签

for ($i = 1; $i < count($data); $i++) {

$chartSeries->addDataPoint(new PHPExcel_Chart_DataSeriesValues('Number', $data[$i])); // 设置数据点

}

// 将数据系列添加到图表对象中

$chart->addSeries($chartSeries);

// 设置图表的样式

$plotArea = new PHPExcel_Chart_PlotArea(null, array($chartSeries));

$chart->setPlotArea($plotArea);

$legend = new PHPExcel_Chart_Legend(PHPExcel_Chart_Legend::POSITION_RIGHT, null, false);

$chart->setLegend($legend);

// 将图表添加到工作表中

$sheet->addChart($chart);

// 保存Excel文件

$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');

$objWriter->save('example.xlsx');

?>

上述代码中,我们创建了一个Line Chart类型的图表,通过addDataPoint方法设置了数据点。在设置图表样式时,我们使用了PlotArea和Legend对象来控制图表的区域和图例。最后,将图表添加到工作表中,并保存为Excel文件。

修改图表边框

要修改图表的边框样式,可以通过设置PHPExcel_Style_Border对象的属性来实现。以下是一个示例代码,演示了如何修改图表的边框:

php

// 创建一个新的Excel对象

$objPHPExcel = new PHPExcel();

// 选择要操作的工作表

$objPHPExcel->setActiveSheetIndex(0);

$sheet = $objPHPExcel->getActiveSheet();

// 创建图表对象

$chart = new PHPExcel_Chart(

'chart1', // 图表的唯一ID

null, // 图表的标题

null, // 图表的标题样式

null, // 图表的X轴标签

null // 图表的Y轴标签

);

// 设置图表的数据系列...

// 设置图表的样式

$plotArea = new PHPExcel_Chart_PlotArea(null, array($chartSeries));

$chart->setPlotArea($plotArea);

$legend = new PHPExcel_Chart_Legend(PHPExcel_Chart_Legend::POSITION_RIGHT, null, false);

$chart->setLegend($legend);

// 修改图表边框

$borderStyle = array(

'outline' => array(

'style' => PHPExcel_Style_Border::BORDER_THICK, // 设置边框样式为粗体

'color' => array('rgb' => '000000') // 设置边框颜色为黑色

)

);

$chart->getStyle()->applyFromArray(array('border' => $borderStyle));

// 将图表添加到工作表中...

// 保存Excel文件...

?>

在上述示例代码中,我们通过调用getStyle方法获取到图表的样式对象,并使用applyFromArray方法将边框样式应用到图表上。设置边框样式时,我们使用了BORDER_THICK常量来设置边框为粗体,并设置边框颜色为黑色。

修改图表背景

要修改图表的背景颜色,可以通过设置PHPExcel_Style_Fill对象的属性来实现。以下是一个示例代码,演示了如何修改图表的背景颜色:

php

// 创建一个新的Excel对象

$objPHPExcel = new PHPExcel();

// 选择要操作的工作表

$objPHPExcel->setActiveSheetIndex(0);

$sheet = $objPHPExcel->getActiveSheet();

// 创建图表对象

$chart = new PHPExcel_Chart(

'chart1', // 图表的唯一ID

null, // 图表的标题

null, // 图表的标题样式

null, // 图表的X轴标签

null // 图表的Y轴标签

);

// 设置图表的数据系列...

// 设置图表的样式

$plotArea = new PHPExcel_Chart_PlotArea(null, array($chartSeries));

$chart->setPlotArea($plotArea);

$legend = new PHPExcel_Chart_Legend(PHPExcel_Chart_Legend::POSITION_RIGHT, null, false);

$chart->setLegend($legend);

// 修改图表背景

$fill = array(

'type' => PHPExcel_Style_Fill::FILL_SOLID, // 设置填充类型为纯色填充

'startcolor' => array('rgb' => 'FFFF00') // 设置填充颜色为黄色

);

$chart->getStyle()->getFill()->applyFromArray($fill);

// 将图表添加到工作表中...

// 保存Excel文件...

?>

在上述示例代码中,我们通过调用getStyle方法获取到图表的样式对象,并使用getFill方法获取到填充样式对象。通过applyFromArray方法将填充样式应用到图表上。设置填充样式时,我们使用了FILL_SOLID常量来设置填充类型为纯色填充,并设置填充颜色为黄色。

本文介绍了如何使用PHPExcel库修改Excel文件中图表的颜色、边框和背景。通过设置相应的属性,我们可以轻松地实现对图表样式的自定义。使用PHPExcel库,我们可以更加灵活地操作Excel文件,满足不同的需求。希望本文对你有所帮助,谢谢阅读!

参考资料:

- PHPExcel官方文档:https://github.com/PHPOffice/PHPExcel