phpexcel导出excel的颜色与网页中颜色不一致的解决方法

WBOY
Freigeben: 2016-07-25 09:10:12
Original
995 Leute haben es durchsucht
  1. require_once './PHPExcel.php';
  2. require_once './Excel5.php';
  3. require_once './get_excel_row.php';
  4. require "../include/base.php";
  5. require "../include/function/006/creatExcelDb.php";
  6. define("COLOR1","#96B7F6");
  7. //查 处理 数据--------------------------
  8. $q = $db->query("select * from oa_event_sales");
  9. while($a = $db->fetch_array($q)){
  10. $list[] = $a;
  11. }
  12. $ce = new creatExcelDb();
  13. $re = $ce->_run($list,'served_time','client_status','oid');
  14. $all_nums=0;
  15. $num=array();
  16. foreach($re as $k=>$v){
  17. $num[$k]=count($re[$k]);
  18. $all_nums+=count($re[$k]);
  19. }
  20. $jq = array();
  21. $title1 = client_status;
  22. $title2 = fin_confirm;
  23. $title3 = oid;
  24. //去除数组中相同的值
  25. foreach($re as $key => $val){
  26. if(true){
  27. foreach($val as $key2 => $val2){
  28. if(!in_array($key2,$jq)){
  29. $jq[] = $key2;
  30. }
  31. }
  32. }
  33. }
  34. $arr_keys=array();
  35. foreach($re as $k=>$v){
  36. foreach($v as $k2=>$v2){
  37. $arr_keys[]=$k2;
  38. }
  39. }
  40. $c=array_count_values($arr_keys);
  41. //++===---------------------------
  42. // 创建一个处理对象实例
  43. $objExcel = new PHPExcel();
  44. // 创建文件格式写入对象实例, uncomment
  45. $objWriter = new PHPExcel_Writer_Excel5($objExcel);
  46. //设置文档基本属性/**似乎一般情况下用不到**/
  47. $objProps = $objExcel->getProperties();
  48. $objProps->setCreator("杨本木");
  49. $objProps->setLastModifiedBy("杨本木");
  50. $objProps->setTitle("杨本木");
  51. $objProps->setSubject("杨本木");
  52. $objProps->setDescription("杨本木");
  53. $objProps->setKeywords("杨本木");
  54. $objProps->setCategory("杨本木");
  55. //*************************************
  56. //设置当前的sheet索引,用于后续的内容操作。
  57. //一般只有在使用多个sheet的时候才需要显示调用。
  58. //缺省情况下,PHPExcel会自动创建第一个sheet被设置SheetIndex=0
  59. $objExcel->setActiveSheetIndex(0);
  60. $objActSheet = $objExcel->getActiveSheet();
  61. //设置当前活动sheet的名称
  62. $objActSheet->setTitle('当前sheetname');
  63. //设置宽度,这个值和EXCEL里的不同,不知道是什么单位,略小于EXCEL中的宽度
  64. //$objActSheet->getColumnDimension('A')->setWidth(20);
  65. //$objActSheet->getRowDimension(1)->setRowHeight(30); //高度
  66. //设置单元格的值
  67. $objActSheet->setCellValue('A1', '总标题显示');
  68. /*
  69. //设置样式
  70. $objStyleA1 = $objActSheet->getStyle('A1');
  71. $objStyleA1->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  72. $objFontA1 = $objStyleA1->getFont();
  73. $objFontA1->setName('宋体');
  74. $objFontA1->setSize(18);
  75. $objFontA1->setBold(true);
  76. //设置列居中对齐
  77. $objActSheet->getStyle('D')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  78. */
  79. //---------------first---------------------
  80. $benmu=1;
  81. $objActSheet->setCellValue('A1', '行标签\列标签');
  82. foreach($jq as $k=>$v){
  83. $objActSheet->setCellValue(get_excel_row($benmu).'1', $v);
  84. $benmu+=1;
  85. }
  86. $objActSheet->setCellValue(get_excel_row($benmu).'1', '总计');
  87. //设置宽度
  88. for($i=0;$i$objActSheet->getColumnDimension(get_excel_row($i))->setWidth(20);
  89. //宽度
  90. $objActSheet->getStyle(get_excel_row($i)."1")->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  91. $objActSheet->getStyle(get_excel_row($i))->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  92. //颜色
  93. $objActSheet->getStyle(get_excel_row($i)."1")->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID);
  94. $objActSheet->getStyle(get_excel_row($i)."1")->getFill()->getStartColor()->setARGB(COLOR1);
  95. }
  96. //-------------content--------------------
  97. $y=2;
  98. foreach($re as $k1=>$v1){ //$k1全部放在A2。。。。后面,k1为电话号码、v1为person-》数字
  99. $objActSheet->setCellValue('A'.$y, $k1);
  100. //颜色
  101. $objActSheet->getStyle('A'.$y)->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID);
  102. $objActSheet->getStyle('A'.$y)->getFill()->getStartColor()->setARGB(COLOR1);
  103. foreach($jq as $k2=>$v2){ //k2是0,v2是person
  104. foreach($v1 as $k3=>$v3){ //$k3为person,$v3是要的值
  105. if($k3==$v2){
  106. //$objActSheet->setCellValue(get_excel_row("1"+$k2).$y,$v1[$k3]);
  107. $objActSheet->setCellValueExplicit(get_excel_row("1"+$k2).$y,$v1[$k3],PHPExcel_Cell_DataType::TYPE_STRING);
  108. }
  109. }
  110. }
  111. $objActSheet->setCellValue(get_excel_row("1"+count($jq)).$y, $num[$k1]);
  112. $y+=1;
  113. }
  114. //-----------------last----------------
  115. $objActSheet->setCellValue("A".$y,"总计");
  116. //颜色
  117. $objActSheet->getStyle("A".$y)->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID);
  118. $objActSheet->getStyle("A".$y)->getFill()->getStartColor()->setARGB(COLOR1);
  119. foreach($jq as $k=>$v){ //k为person
  120. $objActSheet->setCellValue(get_excel_row("1"+$k).$y,$c[$v]);
  121. //颜色
  122. $objActSheet->getStyle(get_excel_row("1"+$k).$y)->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID);
  123. $objActSheet->getStyle(get_excel_row("1"+$k).$y)->getFill()->getStartColor()->setARGB(COLOR1);
  124. }
  125. $objActSheet->setCellValue(get_excel_row("1"+count($jq)).$y,$all_nums);
  126. //颜色
  127. $objActSheet->getStyle(get_excel_row("1"+count($jq)).$y)->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID);
  128. $objActSheet->getStyle(get_excel_row("1"+count($jq)).$y)->getFill()->getStartColor()->setARGB(COLOR1);
  129. //-----------------------------------
  130. //输出内容
  131. $outputFileName =time().".xls";
  132. header("Pragma: public");
  133. header("Expires: 0");
  134. header("Cache-Control:must-revalidate, post-check=0, pre-check=0");
  135. header("Content-Type:application/force-download");
  136. header("Content-Type:application/octet-stream");
  137. header("Content-Type:application/download");
  138. header('Content-Disposition:attachment;filename='.$outputFileName.'');
  139. header("Content-Transfer-Encoding:binary");
  140. $objWriter->save('php://output');
  141. ?>
复制代码

以上的代码,define中的颜色在导出的excel没有正确显示出本来应该的颜色。 开始定义了一个红色看显示是什么,如下:define(“COLOR1″,”#FF0000″); 但是结果显示的是,定义蓝色在excel中显示为类似于紫色的颜色,反正就不是页面显示的那种颜色。 看这句代码:$objActSheet->getStyle(‘A'.$y)->getFill()->getStartColor()->setARGB(COLOR1); 考虑可能是ARGB的原因,试着把颜色前面加两位00,格式可能是这样的argb(128,255,0,0),可以先排除这个问题,因为a是透明度,试验后才知道,确实是增加了透明度的4位定色。



Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!