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 相关文章推荐
mysql5写入和读出乱码解决
Nov 25 PHP
PHP session常见问题集锦及解决办法总结
Mar 18 PHP
用PHP将网址字符串转换成超链接(网址或email)
May 25 PHP
PHP zlib扩展实现页面GZIP压缩输出
Jun 17 PHP
php漏洞之跨网站请求伪造与防止伪造方法
Aug 15 PHP
在Yii框架中使用PHP模板引擎Twig的例子
Jun 13 PHP
php需登录的文件上传管理系统
Mar 21 PHP
PHP实现163邮箱自动发送邮件
Mar 29 PHP
详解PHP实现定时任务的五种方法
Jul 25 PHP
php中实现进程锁与多进程的方法
Sep 18 PHP
LNMP部署laravel以及xhprof安装使用教程
Sep 14 PHP
PHP学习记录之常用的魔术常量详解
Dec 12 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
一个用mysql_odbc和php写的serach数据库程序
2006/10/09 PHP
PHP反转字符串函数strrev()函数的用法
2012/02/04 PHP
kindeditor 加入七牛云上传的实例讲解
2017/11/12 PHP
Lumen timezone 时区设置方法(慢了8个小时)
2018/01/20 PHP
php 判断IP为有效IP地址的方法
2018/01/28 PHP
jquery select下拉框操作的一些说明
2010/04/02 Javascript
Ext对基本类型的扩展 ext,extjs,format
2010/12/25 Javascript
JavaScript var声明变量背后的原理示例解析
2013/10/12 Javascript
Javascript中的Array数组对象详谈
2014/03/03 Javascript
jQuery实现的仿百度分页足迹效果代码
2015/10/30 Javascript
漫谈JS引擎的运行机制 你应该知道什么
2016/06/15 Javascript
Vue.js快速入门教程
2016/09/07 Javascript
bootstrap下拉列表与输入框组结合的样式调整
2016/10/08 Javascript
jquery实现弹窗功能(窗口居中显示)
2017/02/27 Javascript
JS中使用 after 伪类清除浮动实例
2017/03/01 Javascript
jQuery实现字体颜色渐变效果的方法
2017/03/29 jQuery
vue-router实现tab标签页(单页面)详解
2017/10/17 Javascript
解决Jstree 选中父节点时被禁用的子节点也会选中的问题
2017/12/27 Javascript
使用layui实现树形结构的方法
2019/09/20 Javascript
javascript实现贪吃蛇小游戏
2020/07/28 Javascript
Python开发的单词频率统计工具wordsworth使用方法
2014/06/25 Python
python 随机数使用方法,推导以及字符串,双色球小程序实例
2017/09/12 Python
Django使用HttpResponse返回图片并显示的方法
2018/05/22 Python
你可能不知道的Python 技巧小结
2020/01/29 Python
Jupyter Notebook输出矢量图实例
2020/04/14 Python
OpenCV+python实现实时目标检测功能
2020/06/24 Python
Python内置函数property()如何使用
2020/09/01 Python
Html5与App的通讯方式详解
2019/10/24 HTML / CSS
Bergfreunde丹麦:登山装备网上零售商
2017/02/26 全球购物
比驿:全球酒店比价网
2018/06/20 全球购物
字符串str除首尾字符外的其他字符按升序排列
2013/03/08 面试题
2013年大学生的自我鉴定
2013/10/24 职场文书
组工干部对照检查材料
2014/08/25 职场文书
信息与计算机科学职业规划范文:成为一艘有方向的船
2014/09/11 职场文书
学习党的群众路线剖析材料
2014/10/09 职场文书
开机音效回归! Windows 11重新引入开机铃声
2021/11/21 数码科技