学习笔记:PHPExcel PHPExcel_Style_Conditional() getStartColor()->setARGB('');结果显示黑色或无色

本文介绍使用PHPExcel库在PHP中设置Excel单元格条件格式的方法,重点讲解如何为单元格'B8'设置当值等于'Failed'时背景色为橙色的样式。文章指出在PHPExcel的不同版本中设置颜色的方法有所区别。

...............略............

$objConditional4 = new PHPExcel_Style_Conditional();

$objConditional4->setConditionType(PHPExcel_Style_Conditional::CONDITION_CELLIS);
$objConditional4->setOperatorType(PHPExcel_Style_Conditional::OPERATOR_EQUAL);
$objConditional4->addCondition('"Failed"');
$objConditional4->getStyle()->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID)->getStartColor()->setARGB('ff9900');

$conditionalStyles1 = $objPHPExcel->getActiveSheet()->getStyle('B8')->getConditionalStyles();

array_push($conditionalStyles1, $objConditional4);
print_r($conditionalStyles1);
$objPHPExcel->getActiveSheet()->getStyle('B8')->setConditionalStyles($conditionalStyles1);

.........略..........


结果excel文件,在PHPExcel1.7.7版本中出来的颜色为黑色,在1.7.8没有颜色

将getStartColor()->setARGB('ff9900');改成getEndColor()->setARGB('ff9900');即可



$objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(15); $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(18); $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(25); $objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(12); $objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(15); $objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth(12); $objPHPExcel->getActiveSheet()->getColumnDimension('G')->setWidth(12); $objPHPExcel->getActiveSheet()->getColumnDimension('H')->setWidth(12); $objPHPExcel->getActiveSheet()->getColumnDimension('I')->setWidth(14); $objPHPExcel->getActiveSheet()->getColumnDimension('J')->setWidth(14); $objPHPExcel->getActiveSheet()->getColumnDimension('K')->setWidth(18); $objPHPExcel->getActiveSheet()->getColumnDimension('L')->setWidth(12); $objPHPExcel->getActiveSheet()->getColumnDimension('M')->setWidth(12); $objPHPExcel->getActiveSheet()->getColumnDimension('N')->setWidth(12); $objPHPExcel->getActiveSheet()->getColumnDimension('O')->setWidth(12); $objPHPExcel->getActiveSheet()->getColumnDimension('P')->setWidth(12); $objPHPExcel->getActiveSheet()->getColumnDimension('Q')->setWidth(12); $objPHPExcel->getActiveSheet()->getColumnDimension('R')->setWidth(12); $objPHPExcel->getActiveSheet()->getColumnDimension('S')->setWidth(12); $objPHPExcel->getActiveSheet()->getColumnDimension('T')->setWidth(12); $objPHPExcel->getActiveSheet()->getColumnDimension('U')->setWidth(12); $objPHPExcel->getActiveSheet()->getColumnDimension('V')->setWidth(12); $objPHPExcel->getActiveSheet()->getColumnDimension('W')->setWidth(12); $objPHPExcel->getActiveSheet()->getColumnDimension('X')->setWidth(12); $objPHPExcel->getActiveSheet()->getColumnDimension('Y')->setWidth(12); $objPHPExcel->getActiveSheet()->getColumnDimension('Z')->setWidth(12); $objPHPExcel->getActiveSheet()->getColumnDimension('AA')->setWidth(12); $objPHPExcel->getActiveSheet()->getColumnDimension('AB')->setWidth(12); $objPHPExcel->getActiveSheet()->getColumnDimension('AC')->setWidth(12); $objPHPExcel->getActiveSheet()->getColumnDimension('AD')->setWidth(12); $objPHPExcel->getActiveSheet()->getColumnDimension('AE')->setWidth(12); $objPHPExcel->getActiveSheet()->getColumnDimension('AF')->setWidth(15); $objPHPExcel->getActiveSheet()->getColumnDimension('AG')->setWidth(20); $objPHPExcel->getActiveSheet()->getColumnDimension('AH')->setWidth(12); $objPHPExcel->getActiveSheet()->getColumnDimension('AI')->setWidth(15); $objPHPExcel->getActiveSheet()->getColumnDimension('AJ')->setWidth(18); $objPHPExcel->getActiveSheet()->getColumnDimension('AK')->setWidth(18); $objPHPExcel->getActiveSheet()->getStyle('A:AK')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objPHPExcel->getActiveSheet()->getStyle('A1:AK1')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objPHPExcel->getActiveSheet()->getStyle('A1:AK1')->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER); $objPHPExcel->getActiveSheet()->getStyle('A1:AK1')->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID); $objPHPExcel->getActiveSheet()->getStyle('A1:Q1')->getFill()->getStartColor()->setARGB('7C9BDE'); $objPHPExcel->getActiveSheet()->getStyle('R1:AE1')->getFill()->getStartColor()->setARGB('FFCCCC'); $objPHPExcel->getActiveSheet()->getStyle('AF1:AK1')->getFill()->getStartColor()->setARGB('FFE300'); $objPHPExcel->getActiveSheet()->getRowDimension('1')->setRowHeight(30); 当列数不确定时,上方的表格样式改如何设置
最新发布
12-10
require_once "../../database/DB.class.php"; require_once "../../../phpspreadsheet/vendor/autoload.php"; $db = MySQLDB::getInstance(); $feecode = isset($_POST['data']['feecode'])?$_POST['data']['feecode']:@$_GET['feecode']; $sqlQuery = "SELECT id,feecode,project,dept,dri,ipn,qty,dosku FROM `chuzhang` WHERE feecode='$feecode'"; $dataArr1 = $db->fetchAll($sqlQuery); // 创建一个新的 Spreadsheet 对象 use PhpOffice\PhpSpreadsheet\Spreadsheet; use PhpOffice\PhpSpreadsheet\Writer\Xlsx; $spreadsheet = new Spreadsheet(); $sheet = $spreadsheet->getActiveSheet(); // 设置表头 $headers = [ 'item', 'feecode', 'project', 'dept', 'dri', 'ipn', 'Vendor_Dri', 'qty', 'dosku' ]; $colIndex = 1; foreach ($headers as $header) { $sheet->setCellValueByColumnAndRow($colIndex, 1, $header); $styleArray = [ 'fill' => [ 'type' => PHPExcel_Style_Fill::FILL_SOLID, 'startcolor' => [ 'rgb' => 'DDDDDD' // 示例为灰色 ] ] ]; $sheet->getStyle(PHPExcel_Cell::stringFromColumnIndex($colIndex) . '1')->applyFromArray($styleArray); $colIndex++; } $sheet->getStyle('A1:CC1')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); // 将查询结果逐行写入 Excel 表格 $rowIndex = 2; foreach ($dataArr1 as $row) { $colIndex = 1; foreach ($row as $value) { $sheet->setCellValueByColumnAndRow($colIndex, $rowIndex, $value); $colIndex++; } $rowIndex++; } $sheet->getColumnDimension('A')->setWidth(12); $sheet->getColumnDimension('B')->setWidth(18); $sheet->getColumnDimension('C')->setWidth(20); $sheet->getColumnDimension('D')->setWidth(38); $sheet->getColumnDimension('E')->setWidth(15); $sheet->getStyle('A:CC')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $sheet->getStyle('A1:CC1')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $sheet->getStyle('A1:CC1')->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER); $sheet->getStyle('A1:I1')->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID); $sheet->getStyle('A1:I1')->getFill()->getStartColor()->setARGB('7C9BDE'); $sheet->getRowDimension('1')->setRowHeight(30); //第一行行高 unset($dataArr); unset($left_stock); // $objPHPExcel->getActiveSheet()->freezePane('I2'); ini_set('memory_limit', '512M'); $currentFilePath = realpath(__FILE__); $directoryPath = dirname($currentFilePath); $dateString = date("YmdHis",time()); $filename = $directoryPath . "\\" . "料件CTB" . $dateString . ".xlsx"; // 开始输出缓存 ob_start(); // 保存文件 $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); $objWriter->save($filename); // 清空(擦除)输出缓存 ob_end_clean(); $filesize = filesize( $filename ); ob_clean(); // 下载文件 header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); header('Content-Disposition: attachment;filename="' . basename($filename) . '"'); header('Content-Length: ' . $filesize); // 发送正确计算得出的内容长度头部信息,以确保整个 Excel 文件被完整地传输给客户端。 readfile($filename); // 下载完毕后删除文件 unlink($filename); // 删除文件的代码需要放在读取文件之后 // 清除最后的缓冲区,避免乱码 ob_end_clean(); 检查修改
09-16
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值