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
Mysql的GROUP_CONCAT()函数使用方法
Mar 28 PHP
php5编程中的异常处理详细方法介绍
Jul 29 PHP
php中var_export与var_dump的区别分析
Aug 21 PHP
学习php笔记 字符串处理
Oct 19 PHP
php数组函数序列之asort() - 对数组的元素值进行升序排序,保持索引关系
Nov 02 PHP
解析使用substr截取UTF-8中文字符串出现乱码的问题
Jun 20 PHP
PHP中配置IIS7实现基本身份验证的方法
Sep 24 PHP
php检查页面是否被百度收录
Oct 28 PHP
详解PHP+AJAX无刷新分页实现方法
Nov 03 PHP
laravel-admin 中列表筛选方法
Oct 03 PHP
php开发最强大的IDE编辑的phpstorm 2020.2配置Xdebug调试的详细教程
Aug 17 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
dedecms后台验证码总提示错误的解决方法
2007/03/21 PHP
php更新修改excel中的内容实例代码
2014/02/26 PHP
PHP实现生成模糊图片的方法示例
2017/12/21 PHP
win10下 php安装seaslog扩展的详细步骤
2020/12/04 PHP
利用javascript中的call实现继承
2007/01/22 Javascript
判断浏览器的javascript版本的代码
2010/09/03 Javascript
巧用js提交表单轻松解决一个页面有多个提交按钮
2013/11/17 Javascript
js实现从中间开始往上下展开网页窗口的方法
2015/03/02 Javascript
jQuery入门基础知识学习指南
2015/08/14 Javascript
jQuery实现圣诞节礼物传送(花式轮播)
2016/12/25 Javascript
vue-cli中打包图片路径错误的解决方法
2017/10/26 Javascript
three.js中3D视野的缩放实现代码
2017/11/16 Javascript
在vue项目创建的后初始化首次使用stylus安装方法分享
2018/01/25 Javascript
使用vue制作探探滑动堆叠组件的实例代码
2018/03/07 Javascript
详解Vue.js在页面加载时执行某个方法
2018/11/20 Javascript
解决vuex数据异步造成初始化的时候没值报错问题
2019/11/13 Javascript
小程序实现背景音乐播放和暂停
2020/06/19 Javascript
[02:39]DOTA2国际邀请赛助威团西雅图第一天
2013/08/08 DOTA
详解Python爬虫的基本写法
2016/01/08 Python
Python 制作糗事百科爬虫实例
2016/09/22 Python
python删除文本中行数标签的方法
2018/05/31 Python
深入浅析Python2.x和3.x版本的主要区别
2018/11/30 Python
10 分钟快速入门 Python3的教程
2019/01/29 Python
用python打印菱形的实操方法和代码
2019/06/25 Python
详解将Pandas中的DataFrame类型转换成Numpy中array类型的三种方法
2019/07/06 Python
python 操作hive pyhs2方式
2019/12/21 Python
python nohup 实现远程运行不宕机操作
2020/04/16 Python
法国面料和小百货在线商店:Mondial Tissus
2019/03/23 全球购物
aden + anais英国官网:美国婴儿贴身用品品牌
2019/09/08 全球购物
会计专业应届生求职信
2013/11/24 职场文书
艺术学院毕业生自我评价
2014/03/02 职场文书
2014年学习全国道德模范事迹思想汇报
2014/09/15 职场文书
委托书的写法
2014/09/16 职场文书
财务经理岗位职责
2015/01/31 职场文书
党员违纪检讨书
2015/05/05 职场文书
mapstruct的用法之qualifiedByName示例详解
2022/04/06 Java/Android