首頁 >後端開發 >php教程 >phpexcel匯出excel的顏色與網頁中顏色不一致的解法

phpexcel匯出excel的顏色與網頁中顏色不一致的解法

WBOY
WBOY原創
2016-07-25 09:10:121022瀏覽
  1. require_once './PHPExcel.php';
  2. require_once './Excel5.php';d .php';
  3. 需要"../include/base.php";
  4. 需要"../include/function/006/creatExcelDb.php";
  5. define("COLOR1","# 96B7F6 ");
  6. //查處理資料------------------------------------
  7. $q = $db->query ("從oa_event_sales 中選擇*");
  8. while($a = $db->fetch_array($q)){
  9. $list[] = $a;
  10. }
  11. $ce = new creatExcelDb();
  12. $re = $ce->_run($list,'served_time','client_status','oid');
  13. $all_nums=0;
  14. $num=array( );
  15. foreach($re as $k=>$v){
  16. $num[$k]=count($re[$k]);
  17. $all_nums+ =count($re[ $k]);
  18. }
  19. $jq = array();
  20. $title1 = client_status;
  21. $title2 = fin_confirm;
  22. $title3 = oid;
  23. //恢復流量中相同的值
  24. foreach($re as $key => $val){
  25. if(true){
  26. foreach($val as $key2 => $val2){
  27. if (!in_array($key2,$jq)){
  28. $jq[] = $key2;
  29. }
  30. }
  31. }
  32. }
  33. $arr_keys=array ();
  34. foreach($re as $k=>$v){
  35. foreach($v as $k2=>$v2){
  36. $arr_keys[]=$k2;
  37. }
  38. }
  39. $c=array_count_values($arr_keys);
  40. //++===------------------------ ---------------- -
  41. //建立一個處理物件實例
  42. $objExcel = new PHPExcel();
  43. //檔案格式建立寫入物件實例,取消註解
  44. $objWriter = new PHPExcel_Writer_Excel5($objExcel);
  45. //設定文件基本屬性/**似乎一般情況下用不到**/
  46. $objProps = $objExcel->getProperties();
  47. $objProps = $objExcel->getProperties(); $objProps->setCreator("楊本木");
  48. $ objProps->setLastModifiedBy("楊本木");
  49. $objProps->setTitle("楊本木");
  50. $objProps->setSubject("楊本木");
  51. $objProps->setSubject("楊本木ject("楊本木ject("楊本木ject) ");
  52. $objProps->setDescription ("楊本木");
  53. $objProps->setKeywords("楊本木");
  54. $objProps->setCategory("楊本木");
  55. $objProps->setCategory("楊本木");
  56. // *************************************
  57. //設定目前的sheet索引,用於後續的內容操作。
  58. //一般只有在使用多個sheet的時候才需要顯示呼叫。
  59. //預設情況下,PHPExcel會自動建立第一個sheet被設定SheetIndex=0
  60. $objExcel->setActiveSheetIndex(0);
  61. $objActSheet = $objExcel->getActiveSheet();
  62. //設定目前活動sheet的名稱
  63. $objActSheet->setTitle('目前sheetname');
  64. //設定寬度,這個值和EXCEL裡的不同,不知道是什麼單位,略小於EXCEL中的寬度
  65. //$objActSheet->getColumnDimension('A')->setWidth(20);
  66. //$objActSheet->getRowDimension(1)->setRowHeight(30); //高度
  67. //設定儲存格的值
  68. $objActSheet->setCellValue('A1', '總標題顯示');
  69. /*
  70. //設定樣式
  71. $objStyleA1 = $objActSheet-> getStyle('A1');
  72. $objStyleA1->getAlignment()->setHorizo​​​​ntal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  73. $objFontA1 = $objSFontleA1-getFontat; '宋體');
  74. $objFontA1->setSize(18);
  75. $objFontA1->setBold(true);
  76. //設定列居中對齊
  77. $objActSheet->getStyle('D' )->getAlignment()->setHorizo​​ntal(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$objActSheet->getColumnDimension(get_excel_row($i))-> setWidth(20) ;
  89. //寬度
  90. $objActSheet->getStyle(get_excel_row($i)."1")->getAlignment()->setHorizo​​​​ntal(PHPExcel_Style_Alignment::HORIZONLMorizo​​​​n. >$objActSheet- >getStyle(get_excel_row($i))->getAlignment()->setHorizo​​ntal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  91. //顏色
  92. $obd )." 1")->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID);
  93. $objActSheet->getStyle(get_excel_row($i)."1")->getFill()->getStartor () ->setARGB(COLOR1);
  94. }
  95. //-------------內容----------------- ---
  96. $y=2;
  97. foreach($re as $k1=>$v1){ //$k1全部放在A2上。 。 。 。後面,k1為電話號碼、v1為person-》數字
  98. $objActSheet->setCellValue('A'.$y, $k1);
  99. //顏色
  100. $objActSheet->getStyle('A '.$y)->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID);
  101. $objActSheet->getStyle('A'.$y)->getFill()->getStartColor()->setARGB( COLOR1);
  102. foreach($jq as $k2=>$v2){ //k2是0,v2是person
  103. foreach($v1 as $k3=>$v3){ //$k3為person ,$v3是要的值
  104. if($k3==$v2){
  105. //$objActSheet->setCellValue(get_excel_row("1"+$k2).$y,$v1[$k3] );
  106. $objActSheet->setCellValueExplicit(get_excel_row("1"+$k2).$y,$v1[$k3],PHPExcel_Cell_DataType::TYPE_STRING);
  107. }
  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-$objActShelety "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()->getStartColor()->getStartColor()->getStartColor()->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( +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位定色。



陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn