phpexcel导出excel的颜色和网页中的颜色显示不一致
程序员文章站
2022-06-25 13:21:37
关于phpexcel导出颜色的一些问题,用phpexcel做导出的excel的颜色怎么和网页中的颜色显示不一致呢?想要知道到底是怎么回事?应该如何来解决呢?php代码细节如...
关于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 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位定色。
上一篇: 小孩子搞笑图片,挑战大姿势。
下一篇: 孩子天生就是艺术家,搞笑的艺术家!
推荐阅读
-
phpexcel导出excel的颜色与网页中颜色不一致的解决方法
-
phpexcel导出excel的颜色和网页中的颜色显示不一致
-
[HTML]解决html5中设置的颜色和浏览器显示的颜色不一致的问题
-
Excel2003中制作带有立体感的单元格且可自定义边框和颜色
-
使用excel超级功能聚光灯自定义颜色突出显示当前的行和列
-
phpexcel导出excel的颜色和网页中的颜色显示不一致
-
Excel2010中用不同的颜色标记显示重复项方便查找与处理
-
Excel2003中条形图的正值负值如何设置不同颜色区分显示
-
phpexcel导出excel的颜色和网页中的颜色显示不一致_PHP教程
-
Android Studio 界面布局之xml文件中给输入框editText修改下划线颜色 / 为按钮设置圆角和颜色 / 约束布局预览效果和运行效果不一致 问题的解决