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 相关文章推荐
一个简洁的多级别论坛
Oct 09 PHP
Windows下IIS6/Apache2.2.4+MySQL5.2+PHP5.2.1安装配置方法
May 03 PHP
PHP学习 运算符与运算符优先级
Jun 15 PHP
php 购物车实例(申精)
May 11 PHP
php 常用类整理
Dec 23 PHP
php DOS攻击实现代码(附如何防范)
May 29 PHP
浏览器预览PHP文件时顶部出现空白影响布局分析原因及解决办法
Jan 11 PHP
解析将多维数组转换为支持curl提交的一维数组格式
Jul 08 PHP
单台服务器的PHP进程之间实现共享内存的方法
Jun 13 PHP
php对接java现实加签验签的实例
Nov 25 PHP
利用PHP判断文件是否为图片的方法总结
Jan 06 PHP
PHP PDOStatement::nextRowset讲解
Feb 01 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
页面利用渐进式JPEG来提升用户体验度
2014/12/01 PHP
jquery与google map api结合使用 控件,监听器
2010/03/04 Javascript
jquery对dom的操作常用方法整理
2013/06/25 Javascript
用jquery方法操作radio使其默认选项是否
2013/09/10 Javascript
jquery 取子节点及当前节点属性值的方法
2014/08/24 Javascript
JavaScript数组Array对象增加和删除元素方法总结
2015/01/20 Javascript
扒一扒JavaScript 预解释
2015/01/28 Javascript
微信小程序 支付简单实例及注意事项
2017/01/06 Javascript
Jquery鼠标放上去显示全名的实现方法
2017/02/06 Javascript
AngularJS实现表单验证功能详解
2017/10/12 Javascript
微信小程序实现文字从右向左无限滚动
2020/11/18 Javascript
mongodb初始化并使用node.js实现mongodb操作封装方法
2019/04/02 Javascript
vue组件中iview的modal组件爬坑问题之modal的显示与否应该是使用v-show
2019/04/12 Javascript
BootstrapValidator验证用户名已存在(ajax)
2019/11/08 Javascript
js实现数据导出为EXCEL(支持大量数据导出)
2020/03/31 Javascript
jQuery 淡入/淡出效果函数用法分析
2020/05/19 jQuery
[55:45]LGD vs OG 2019国际邀请赛淘汰赛 胜者组 BO3 第三场 8.24
2019/09/10 DOTA
python 添加用户设置密码并发邮件给root用户
2016/07/25 Python
Python中几种导入模块的方式总结
2017/04/27 Python
Python读写/追加excel文件Demo分享
2018/05/03 Python
基于Python第三方插件实现西游记章节标注汉语拼音的方法
2020/05/22 Python
Python的Tqdm模块实现进度条配置
2021/02/24 Python
IE8下CSS3选择器nth-child() 不兼容问题的解决方法
2016/11/16 HTML / CSS
Banana Republic英国官网:香蕉共和国,GAP集团旗下偏贵族风
2018/04/24 全球购物
C++:局部变量能否和全局变量重名
2014/03/03 面试题
自我鉴定范文
2013/11/10 职场文书
五型班组建设方案
2014/02/10 职场文书
后备干部考察材料
2014/02/12 职场文书
领导党性分析材料
2014/02/15 职场文书
爱国主义教育演讲稿
2014/08/26 职场文书
地方课程教学计划
2015/01/19 职场文书
英语感谢信范文
2015/01/20 职场文书
法定授权委托证明书
2015/06/18 职场文书
详解Python生成器和基于生成器的协程
2021/06/03 Python
Python NumPy灰度图像的压缩原理讲解
2021/08/04 Python
win10+RTX3050ti+TensorFlow+cudn+cudnn配置深度学习环境的方法
2022/06/25 Servers