phpexcel导出excel的颜色和网页中的颜色显示不一致


Posted in PHP onDecember 11, 2012

关于phpexcel导出颜色的一些问题,用phpexcel做导出的excel的颜色怎么和网页中的颜色显示不一致呢?想要知道到底是怎么回事?应该如何来解决呢?PHP代码细节如下:
PHP code:

<?php 
require_once './PHPExcel.php'; 
require_once './Excel5.php'; 
require_once './get_excel_row.php'; 
require "../include/base.php"; 
require "../include/function/006/creatExcelDb.php"; 
define("COLOR1","#96B7F6"); 
//查 处理 数据===+++++++++++++++++++++++++++++++++++++++++++++ 
$q = $db->query("select * from oa_event_sales"); 
while($a = $db->fetch_array($q)){ 
$list[] = $a; 
} 
$ce = new creatExcelDb(); 
$re = $ce->_run($list,'served_time','client_status','oid'); 
$all_nums=0; 
$num=array(); 
foreach($re as $k=>$v){ 
$num[$k]=count($re[$k]); 
$all_nums+=count($re[$k]); 
} 
$jq = array(); 
$title1 = client_status; 
$title2 = fin_confirm; 
$title3 = oid; 
//去除数组中相同的值 
foreach($re as $key => $val){ 
if(true){ 
foreach($val as $key2 => $val2){ 
if(!in_array($key2,$jq)){ 
$jq[] = $key2; 
} 
} 
} 
} 
$arr_keys=array(); 
foreach($re as $k=>$v){ 
foreach($v as $k2=>$v2){ 
$arr_keys[]=$k2; 
} 
} 
$c=array_count_values($arr_keys); 
//++===++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
// 创建一个处理对象实例 
$objExcel = new PHPExcel(); 
// 创建文件格式写入对象实例, uncomment 
$objWriter = new PHPExcel_Writer_Excel5($objExcel); 
//设置文档基本属性/**似乎一般情况下用不到**/ 
$objProps = $objExcel->getProperties(); 
$objProps->setCreator("杨本木"); 
$objProps->setLastModifiedBy("杨本木"); 
$objProps->setTitle("杨本木"); 
$objProps->setSubject("杨本木"); 
$objProps->setDescription("杨本木"); 
$objProps->setKeywords("杨本木"); 
$objProps->setCategory("杨本木"); 
//************************************* 
//设置当前的sheet索引,用于后续的内容操作。 
//一般只有在使用多个sheet的时候才需要显示调用。 
//缺省情况下,PHPExcel会自动创建第一个sheet被设置SheetIndex=0 
$objExcel->setActiveSheetIndex(0); 
$objActSheet = $objExcel->getActiveSheet(); 
//设置当前活动sheet的名称 
$objActSheet->setTitle('当前sheetname'); 
//设置宽度,这个值和EXCEL里的不同,不知道是什么单位,略小于EXCEL中的宽度 
//$objActSheet->getColumnDimension('A')->setWidth(20); 
//$objActSheet->getRowDimension(1)->setRowHeight(30); //高度 
//设置单元格的值 
$objActSheet->setCellValue('A1', '总标题显示'); 
/* 
//设置样式 
$objStyleA1 = $objActSheet->getStyle('A1'); 
$objStyleA1->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); 
$objFontA1 = $objStyleA1->getFont(); 
$objFontA1->setName('宋体'); 
$objFontA1->setSize(18); 
$objFontA1->setBold(true); 
//设置列居中对齐 
$objActSheet->getStyle('D')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); 
*/ 
//============first=================================== 
$benmu=1; 
$objActSheet->setCellValue('A1', '行标签\列标签'); 
foreach($jq as $k=>$v){ 
$objActSheet->setCellValue(get_excel_row($benmu).'1', $v); 
$benmu+=1; 
} 
$objActSheet->setCellValue(get_excel_row($benmu).'1', '总计'); 
//设置宽度 
for($i=0;$i<$benmu+1;$i++){ 
$objActSheet->getColumnDimension(get_excel_row($i))->setWidth(20); 
//宽度 
$objActSheet->getStyle(get_excel_row($i)."1")->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); 
$objActSheet->getStyle(get_excel_row($i))->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); 
//颜色 
$objActSheet->getStyle(get_excel_row($i)."1")->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID); 
$objActSheet->getStyle(get_excel_row($i)."1")->getFill()->getStartColor()->setARGB(COLOR1); 
} 
//==============content================= 
$y=2; 
foreach($re as $k1=>$v1){ //$k1全部放在A2。。。。后面,k1为电话号码、v1为person-》数字 
$objActSheet->setCellValue('A'.$y, $k1); 
//颜色 
$objActSheet->getStyle('A'.$y)->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID); 
$objActSheet->getStyle('A'.$y)->getFill()->getStartColor()->setARGB(COLOR1); 
foreach($jq as $k2=>$v2){ //k2是0,v2是person 
foreach($v1 as $k3=>$v3){ //$k3为person,$v3是要的值 
if($k3==$v2){ 
//$objActSheet->setCellValue(get_excel_row("1"+$k2).$y,$v1[$k3]); 
$objActSheet->setCellValueExplicit(get_excel_row("1"+$k2).$y,$v1[$k3],PHPExcel_Cell_DataType::TYPE_STRING); 
} 
} 
} 
$objActSheet->setCellValue(get_excel_row("1"+count($jq)).$y, $num[$k1]); 
$y+=1; 
} 
//=================last========== 
$objActSheet->setCellValue("A".$y,"总计"); 
//颜色 
$objActSheet->getStyle("A".$y)->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID); 
$objActSheet->getStyle("A".$y)->getFill()->getStartColor()->setARGB(COLOR1); 
foreach($jq as $k=>$v){ //k为person 
$objActSheet->setCellValue(get_excel_row("1"+$k).$y,$c[$v]); 
//颜色 
$objActSheet->getStyle(get_excel_row("1"+$k).$y)->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID); 
$objActSheet->getStyle(get_excel_row("1"+$k).$y)->getFill()->getStartColor()->setARGB(COLOR1); 
} 
$objActSheet->setCellValue(get_excel_row("1"+count($jq)).$y,$all_nums); 
//颜色 
$objActSheet->getStyle(get_excel_row("1"+count($jq)).$y)->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID); 
$objActSheet->getStyle(get_excel_row("1"+count($jq)).$y)->getFill()->getStartColor()->setARGB(COLOR1); 
//=============================== 
//输出内容 
$outputFileName =time().".xls"; 
header("Pragma: public"); 
header("Expires: 0"); 
header("Cache-Control:must-revalidate, post-check=0, pre-check=0"); 
header("Content-Type:application/force-download"); 
header("Content-Type:application/octet-stream"); 
header("Content-Type:application/download"); 
header('Content-Disposition:attachment;filename='.$outputFileName.''); 
header("Content-Transfer-Encoding:binary"); 
$objWriter->save('php://output'); 
?>

上面的代码中,define中的颜色在导出的excel没有正确显示出本来应该的颜色?是什么原因?为什么呢?
开始定义了一个红色看显示是什么,如下:define(“COLOR1″,”#FF0000″);
但是结果显示的是,定义蓝色在excel中显示为类似于紫色的颜色,反正就不是页面显示的那种颜色,太令人费解了。。。。。
看这句代码:$objActSheet->getStyle(‘A'.$y)->getFill()->getStartColor()->setARGB(COLOR1);
有点觉得可能是ARGB原因,故试着把颜色前面加两位00,我不知道这样行不行,试试效果先,而且格式也有可能是这样的argb(128,255,0,0),可以先排除这个问题,因为a是透明度,后来试验了才知道,确实是增加了透明度的4位定色。
PHP 相关文章推荐
有关JSON以及JSON在PHP中的应用
Apr 09 PHP
那些年我们错过的魔术方法(Magic Methods)
Jan 14 PHP
php数组删除元素示例
Mar 21 PHP
codeigniter上传图片不能正确识别图片类型问题解决方法
Jul 25 PHP
php实现事件监听与触发的方法
Nov 21 PHP
php封装的验证码类分享
Feb 26 PHP
PHP构造二叉树算法示例
Jun 21 PHP
SCP远程VPS快速搬家和WDCP升级php5.3安装memcached和eaccelerator教程
Jul 27 PHP
php表单习惯用的正则表达式
Oct 11 PHP
php图片裁剪函数
Oct 31 PHP
PHP进阶学习之Geo的地图定位算法详解
Jun 19 PHP
PHP filter_var() 函数, 验证判断EMAIL,URL等
Mar 09 PHP
PHP5.3的垃圾回收机制(动态存储分配方案)深入理解
Dec 10 #PHP
PHP 的异常处理、错误的抛出及回调函数等面向对象的错误处理方法
Dec 07 #PHP
zend framework配置操作数据库实例分析
Dec 06 #PHP
windows下zendframework项目环境搭建(通过命令行配置)
Dec 06 #PHP
用Simple Excel导出xls实现方法
Dec 06 #PHP
php读取EXCEL文件 php excelreader读取excel文件
Dec 06 #PHP
php excel reader读取excel内容存入数据库实现代码
Dec 06 #PHP
You might like
漫威DC御用漫画家去世 他的表情包曾走红网络
2020/04/09 欧美动漫
基于mysql的论坛(3)
2006/10/09 PHP
php循环输出数据库内容的代码
2008/05/24 PHP
php 求质素(素数) 的实现代码
2011/04/12 PHP
php无限分类且支持输出树状图的详细介绍
2013/06/19 PHP
php事务处理实例详解
2014/07/11 PHP
PHP获取HTTP body内容的方法
2018/12/31 PHP
浅谈laravel5.5 belongsToMany自身的正确用法
2019/10/17 PHP
PHP连接MySQL数据库操作代码实例解析
2020/07/11 PHP
基于JQuery框架的AJAX实例代码
2009/11/03 Javascript
JavaScript 参数中的数组展开 [译]
2012/09/21 Javascript
javascript函数重载解决方案分享
2014/02/19 Javascript
探寻Javascript执行效率问题
2014/11/12 Javascript
浅析JavaScript 箭头函数 generator Date JSON
2016/05/23 Javascript
微信小程序 二维码canvas绘制实例详解
2017/01/06 Javascript
Vue弹出菜单功能的实现代码
2018/09/12 Javascript
在博客园博文中添加自定义右键菜单的方法详解
2020/02/05 Javascript
关于Vue中$refs的探索浅析
2020/11/05 Javascript
Python闭包实现计数器的方法
2015/05/05 Python
Python实现登录人人网并抓取新鲜事的方法
2015/05/11 Python
Python实现求两个csv文件交集的方法
2017/09/06 Python
分析python切片原理和方法
2017/12/19 Python
利用python计算windows全盘文件md5值的脚本
2019/07/27 Python
pandas DataFrame 数据选取,修改,切片的实现
2020/04/24 Python
numpy实现RNN原理实现
2021/03/02 Python
LTD Commodities:礼品,独特发现,家居装饰,家用器皿
2017/08/11 全球购物
新秀丽官方旗舰店:Samsonite拉杆箱、双肩包、皮具
2018/03/05 全球购物
法国床上用品商店:La Compagnie du lit
2019/12/26 全球购物
SAZAC的动物连体衣和动物睡衣:Kigurumi Shop
2020/03/14 全球购物
PHP开发工程师面试问题集锦
2012/11/01 面试题
高中校园广播稿
2014/01/11 职场文书
2014年小学图书室工作总结
2014/12/09 职场文书
文明礼仪主题班会
2015/08/13 职场文书
基于angular实现树形二级表格
2021/10/16 Javascript
十大动画制作软件,Adobe产品上榜两款,第一是行业标准软件
2022/03/18 杂记
Pygame游戏开发之太空射击实战敌人精灵篇
2022/08/05 Python