ホームページ > バックエンド開発 > PHPチュートリアル > phpexcelでExcelにエクスポートした色がWebページの色と一致しない問題の解決方法

phpexcelでExcelにエクスポートした色がWebページの色と一致しない問題の解決方法

WBOY
リリース: 2016-07-25 09:10:12
オリジナル
1021 人が閲覧しました
  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. //同じ値を削除します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. // 処理オブジェクトインスタンス作成
  43. $objExcel = new PHPExcel();
  44. // ファイル形式書き込みオブジェクトインスタンス作成、コメント解除
  45. $objWriter = new PHPExcel_Writer_Excel5($objExcel );
  46. //基本的なドキュメント プロパティを設定します/**一般的には使われないようです**/
  47. $objProps = $objExcel->getProperties();
  48. $objProps->setCreator("楊弁夢");
  49. $objProps->gt; 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('currentsheetname');
  63. //幅を設定します。単位はわかりませんが、幅より少し小さいです。 EXCEL 内
  64. //$objActSheet->getColumnDimension('A')->setWidth(20);
  65. //$objActSheet->getRowDimension(1)->setRowHeight(30); //Height
  66. //セルの値を設定
  67. $objActSheet ->setCellValue('A1', 'タイトル合計表示');
  68. /*
  69. //スタイルを設定
  70. $objStyleA1 = $objActSheet->getStyle('A1');
  71. $objStyleA1->getAlignment()- >sethorizo​​ntal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  72. $objFontA1 = $objStyleA1->getFont();
  73. $objFontA1->setName('夏体');
  74. $objFontA1-> ;setSize(18);
  75. $objFontA 1 ->setBold(true);
  76. //列の中央揃えを設定します
  77. $objActSheet->getStyle('D')->getAlignment()->set水平(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', 'Total');
  87. //幅を設定します
  88. for($i=0;$i$objActSheet-> getColumnDimension(get_excel_row($i) )->setWidth(20);
  89. //Width
  90. $objActSheet->getStyle(get_excel_row($i)."1")->getAlignment()->sethorizo​​ntal(PHPExcel_Style_Alignment ::HORIZONTAL_CENTER);
  91. $ objActSheet->getStyle(get_excel_row($i))->getAlignment()->sethorizo​​ntal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  92. //Color
  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. //-------------内容------ --
  97. $y=2 ;
  98. foreach($re as $k1=>$v1){ //すべての $k1 は A2 に配置されます。 。 。 。後、k1は電話番号、v1は人》番号
  99. $objActSheet->setCellValue('A'.$y, $k1);
  100. //Color
  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 は人です
  104. foreach($v1 as $k3=>$v3){ //$k3 は人です,$ 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,"Total");
  116. //Color
  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 は人です
  120. $objActSheet->setCellValue(get_excel_row("1"+$k).$y, $c[$ v]);
  121. //Color
  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. //Color
  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、事前チェック=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. ?>
コードをコピー

上記のコードでは、定義された色は、エクスポートされた Excel では正しい色が表示されません。 まず、次のように赤色を定義して、何が表示されるかを確認します。 しかし、その結果、青は Excel では紫に似た色として表示されるように定義されており、とにかくページに表示される色ではないことがわかります。 このコードを見てください: $objActSheet->getStyle(‘A’.$y)->getFill()->getStartColor()->setARGB(COLOR1); ARGB が原因である可能性を考慮して、色の前に 2 桁の 00 を追加してみてください。この形式は argb(128,255,0,0) のようになります。テスト後、この問題を解決できます。 , 透明度に関しては確かに4ビット色固定が増えていることが分かりました。



ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート