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 相关文章推荐
基于mysql的论坛(5)
Oct 09 PHP
用PHP实现多级树型菜单
Oct 09 PHP
php array_intersect()函数使用代码
Jan 14 PHP
php adodb介绍
Mar 19 PHP
通达OA公共代码 php常用检测函数
Dec 14 PHP
PHP中基于ts与nts版本- vc6和vc9编译版本的区别详解
Apr 26 PHP
php使用mkdir创建多级目录入门例子
May 10 PHP
PHP代码维护,重构变困难的4种原因分析
Jan 25 PHP
Yii2 assets清除缓存的方法
May 16 PHP
Yii数据模型中rules类验证器用法分析
Jul 15 PHP
Yii 2.0在Grid中格式化时间方法示例
Jun 06 PHP
PHP使用HTML5 FormData对象提交表单操作示例
Jul 02 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
用PHP连接MySQL代码的参数说明
2008/06/07 PHP
PHP获取文件后缀名的三个函数
2012/10/15 PHP
Yii实现多按钮保存与提交的方法
2014/12/03 PHP
PHP中preg_match正则匹配中的/u、/i、/s含义
2015/04/17 PHP
PHP中模糊查询并关联三个select框
2017/06/19 PHP
javascript 出生日期和身份证判断大全
2008/11/13 Javascript
Javascript基础知识(三)BOM,DOM总结
2014/09/29 Javascript
JsRender for object语法简介
2014/10/31 Javascript
js中的内部属性与delete操作符介绍
2015/08/10 Javascript
浅析javascript异步执行函数导致的变量变化问题解决思路
2016/05/13 Javascript
angularjs封装bootstrap时间插件datetimepicker
2016/06/20 Javascript
jQuery 3.0十大新特性最终版发布
2016/07/14 Javascript
jQuery菜单实例(全选,反选,取消)
2017/08/28 jQuery
详解react-native-fs插件的使用以及遇到的坑
2017/09/12 Javascript
Vue兼容ie9的问题全面解决方案
2018/06/19 Javascript
微信小程序中如何使用flyio封装网络请求
2019/07/03 Javascript
element-ui封装一个Table模板组件的示例
2021/01/04 Javascript
[00:32]DOTA2上海特级锦标赛 COL战队宣传片
2016/03/04 DOTA
[01:04:20]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第一场 11.29
2020/12/02 DOTA
python实现颜色空间转换程序(Tkinter)
2015/12/31 Python
Python实现批量检测HTTP服务的状态
2016/10/27 Python
Python自动化运维_文件内容差异对比分析
2017/12/13 Python
使用C++扩展Python的功能详解
2018/01/12 Python
Python中pow()和math.pow()函数用法示例
2018/02/11 Python
简单谈谈python基本数据类型
2018/09/26 Python
Python对象转换为json的方法步骤
2019/04/25 Python
基于python 凸包问题的解决
2020/04/16 Python
python 在sql语句中使用%s,%d,%f说明
2020/06/06 Python
婴儿鞋,独特的婴儿服装和配件:Zutano
2018/11/03 全球购物
英国探险旅游专家:Explore
2018/12/20 全球购物
Lookfantastic阿联酋官网:英国知名美妆护肤购物网站
2020/05/26 全球购物
音乐教学反思
2014/02/02 职场文书
汽车装潢店创业计划书范文
2014/02/05 职场文书
出资证明书范本(标准版)
2014/09/24 职场文书
劳动纠纷调解协议书格式
2014/11/30 职场文书
建筑工地资料员岗位职责
2015/04/13 职场文书