phpexcel에서 Excel로 내보낸 색상이 웹 페이지의 색상과 일치하지 않는 문제에 대한 해결 방법

WBOY
풀어 주다: 2016-07-25 09:10:12
원래의
995명이 탐색했습니다.
  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 ("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. // 创建文件格式写入对象实例, 주석 해제
  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. //나중 사용을 위해 현재 시트 인덱스 설정 콘텐츠 운영.
  57. //일반적으로 여러 시트를 사용할 때만 표시 호출이 필요합니다.
  58. //기본적으로 PHPExcel은 SheetIndex=0
  59. $objExcel->setActiveSheetIndex(0);
  60. $objActSheet = $objExcel->getActiveSheet() ;
  61. 을 사용하여 자동으로 첫 번째 시트를 생성합니다. //현재 활성 시트의 이름을 설정
  62. $objActSheet->setTitle('현재 시트 이름');
  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. / /---------------첫 번째---------
  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<$benmu 1;$i ){
  89. $objActSheet->getColumnDimension(get_excel_row($i))->setWidth(20);
  90. //도
  91. $objActSheet->getStyle(get_excel_row($i)."1")->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  92. $objActSheet->getStyle (get_excel_row($i))->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  93. //颜color
  94. $objActSheet->getStyle(get_excel_row($i)."1") ->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID);
  95. $objActSheet->getStyle(get_excel_row($i)."1")->getFill()->getStartColor()- >setARGB(COLOR1);
  96. }
  97. //---------------내용---------
  98. $y=2;
  99. foreach($re as $k1=>$v1){ //$k1전체 부분 放재A2。。。后면,k1为电话号码、v1为person-》数字
  100. $objActSheet->setCellValue('A'.$y, $k1);
  101. //颜color
  102. $objActSheet->getStyle( 'A'.$y)->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID);
  103. $objActSheet->getStyle('A'.$y)->getFill()-> getStartColor()->setARGB(COLOR1);
  104. foreach($jq as $k2=>$v2){ //k2是0,v2是person
  105. foreach($v1 as $k3=> $v3){ //$k3为person,$v3是要的值
  106. if($k3==$v2){
  107. //$objActSheet->setCellValue(get_excel_row("1" $k2) .$y,$v1[$k3]);
  108. $objActSheet->setCellValueExplicit(get_excel_row("1" $k2).$y,$v1[$k3],PHPExcel_Cell_DataType::TYPE_STRING);
  109. }
  110. }
  111. }
  112. $objActSheet->setCellValue(get_excel_row("1" count($jq)).$y, $num[$k1]);
  113. $y =1;
  114. }
  115. //----마지막----------------
  116. $objActSheet-> ;setCellValue("A".$y,"总计");
  117. //색
  118. $objActSheet->getStyle("A".$y)->getFill()->setFillType(PHPExcel_Style_Fill ::FILL_SOLID);
  119. $objActSheet->getStyle("A".$y)->getFill()->getStartColor()->setARGB(COLOR1);
  120. foreach($jq as $k=>$v){ //k为person
  121. $objActSheet->setCellValue(get_excel_row("1" $k).$y,$c[$v]);
  122. //颜color
  123. $objActSheet->getStyle(get_excel_row("1" $k).$y)->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID);
  124. $objActSheet->getStyle(get_excel_row ("1" $k).$y)->getFill()->getStartColor()->setARGB(COLOR1);
  125. }
  126. $objActSheet->setCellValue(get_excel_row("1") count($jq)).$y,$all_nums);
  127. //颜color
  128. $objActSheet->getStyle(get_excel_row("1" count($jq)).$y)->getFill( )->setFillType(PHPExcel_Style_Fill::FILL_SOLID);
  129. $objActSheet->getStyle(get_excel_row("1" count($jq)).$y)->getFill()->getStartColor()- >setARGB(COLOR1);
  130. //----------------------
  131. //출입内容
  132. $outputFileName =time().".xls";
  133. header("Pragma: public");
  134. header("Expires: 0");
  135. header("캐시 -Control:재검증 필수, 사후 확인=0, 사전 확인=0");
  136. header("Content-Type:application/force-download");
  137. header("Content-Type:application /octet-stream");
  138. header("Content-Type:application/download");
  139. header('Content-Disposition:attachment;filename='.$outputFileName.'');
  140. header ("Content-Transfer-Encoding:binary");
  141. $objWriter->save('php://output');
  142. ?>
复제代码

以上的代码는 중앙의 颜color를 정의하여 excel没有正确显示 Get本来应该的颜color를 정의합니다. 开始定义了一个红color看显示是什么,如下:define(“COLOR1″,”#FF0000″); 但是结果显示的是,정의는 excel中显示为类似于紫color的颜color,反是就不是页面显示的那种颜color입니다. 기술: $objActSheet->getStyle('A'.$y)->getFill()->getStartColor()->setARGB(COLOR1); 考虑可能是ARGB의 원본, 试着把颜color前side加两位00,格式可能是这样的argb(128,255,0,0),可以先排除这个问题,因为a是透명도,试验后才知道,确实是增加了透명도는 4位정색입니다.



원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!