Home > Backend Development > PHP Tutorial > Solution to the problem that the color exported by phpexcel to excel is inconsistent with the color in the web page

Solution to the problem that the color exported by phpexcel to excel is inconsistent with the color in the web page

WBOY
Release: 2016-07-25 09:10:12
Original
1024 people have browsed it
  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. //Check and process data------------ ---------------
  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. //Remove the same values ​​in the array
  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. // Create a processing object instance
  43. $objExcel = new PHPExcel();
  44. // Create a file format writing object instance, uncomment
  45. $objWriter = new PHPExcel_Writer_Excel5($objExcel);
  46. //Set the basic properties of the document/**It seems that it is generally not used**/
  47. $objProps = $objExcel->getProperties();
  48. $objProps->setCreator("Yang Benmu");
  49. $objProps->setLastModifiedBy("Yang Benmu" ");
  50. $objProps->setTitle("杨本木");
  51. $objProps->setSubject("杨本木");
  52. $objProps->setDescription("杨本木");
  53. $objProps->setKeywords( "杨本木");
  54. $objProps->setCategory("杨本木");
  55. //***************************************
  56. //Set the current sheet index for subsequent content operations .
  57. //Generally, display calls are only needed when using multiple sheets.
  58. //By default, PHPExcel will automatically create the first sheet with SheetIndex=0
  59. $objExcel->setActiveSheetIndex(0);
  60. $objActSheet = $objExcel->getActiveSheet();
  61. //Set the current The name of the active sheet
  62. $objActSheet->setTitle('current sheetname');
  63. //Set the width. This value is different from that in EXCEL. I don’t know what the unit is. It is slightly smaller than the width in EXCEL
  64. //$objActSheet- >getColumnDimension('A')->setWidth(20);
  65. //$objActSheet->getRowDimension(1)->setRowHeight(30); //Height
  66. //Set the value of the cell
  67. $objActSheet ->setCellValue('A1', 'Total title display');
  68. /*
  69. //Set style
  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. $objFontA 1 ->setBold(true);
  76. //Set column center alignment
  77. $objActSheet->getStyle('D')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  78. */
  79. //---------------first--- ------------------
  80. $benmu=1;
  81. $objActSheet->setCellValue('A1', 'row label column label');
  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', 'Total');
  87. //Set the width
  88. for($i=0;$i<$benmu+1;$i++){
  89. $objActSheet->getColumnDimension(get_excel_row($i) )->setWidth(20);
  90. //Width
  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. //-------------content--------------------
  98. $y=2 ;
  99. foreach($re as $k1=>$v1){ //All $k1 is placed in A2. . . .Later, k1 is the phone number and v1 is the person-》number
  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 is 0, v2 is person
  105. foreach($v1 as $k3=>$v3){ //$k3 is person,$ v3 is the desired value
  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. //-----------------last-- ----------------
  116. $objActSheet->setCellValue("A".$y,"Total");
  117. //Color
  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 is 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. //Output content
  132. $outputFileName =time().".xls";
  133. header("Pragma: public");
  134. header("Expires: 0");
  135. header("Cache-Control:must-revalidate, post-check=0, pre-check=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. ?>
Copy the code

The above code, the color in define does not display the correct color in the exported excel. Start by defining a red color to see what is displayed, as follows: define(“COLOR1″,”#FF0000″); But the result shows that blue is defined to be displayed as a color similar to purple in excel, which is not the color displayed on the page anyway. Look at this code: $objActSheet->getStyle(‘A’.$y)->getFill()->getStartColor()->setARGB(COLOR1); Considering that it may be due to ARGB, try adding two digits of 00 in front of the color. The format may be like this argb(128,255,0,0). You can eliminate this problem first, because a is transparency. After testing, I found out that it is indeed increasing. 4-bit color fixation for transparency.



source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template