ホームページ  >  記事  >  バックエンド開発  >  phpexcelエクスポートの色関連の問題

phpexcelエクスポートの色関連の問題

WBOY
WBOYオリジナル
2016-06-13 13:06:54821ブラウズ

phpexcel エクスポートの色の問題
phpexcel を使用してエクスポートした Excel の色が Web ページ上の色表示と一致しないのはなぜですか?

PHP コード
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--><?php
    require_once './PHPExcel.php';
    require_once './Excel5.php';
    require_once './get_excel_row.php';
    "../include/base.php" が必要です。
    "../include/function/006/creatExcelDb.php" が必要です。
    定義("COLOR1","#96B7F6");

//查处理データベース===++++++++++++++++++++++++++++++++++++++++++ +++
   $q = $db->query("select * from oa_event_sales");

while($a = $db->fetch_array($q)){
    $list[] = $a;
}
$ce = 新しいcreatExcelDb();

$re = $ce->_run($list,'served_time','client_status','oid');

$all_nums=0;
$num=配列();
foreach($re as $k=>$v){
    $num[$k]=カウント($re[$k]);
    $all_nums+=count($re[$k]);
    }

$jq = 配列();
$title1 = クライアントステータス;
$title2 = fin_confirm;
$title3 = オイド;

//削除数グループ内の同一の值

foreach($re as $key => $val){
    if(true){
        foreach($val as $key2 => $val2){
            if(!in_array($key2,$jq)){
                $jq[] = $key2;
            }
        }    
    }
}


$arr_keys=array();
foreach($re as $k=>$v){
    foreach($v as $k2=>$v2){
        $arr_keys[]=$k2;
        }
    }

 $c=array_count_values($arr_keys);
//++===++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++

    // 作成された処理オブジェクトの例
    $objExcel = 新しい PHPExcel();
    // 创建文件格式書き込みオブジェクト实例、コメントを解除
    $objWriter = 新しい PHPExcel_Writer_Excel5($objExcel);
    //設置文档基本プロパティ/**一般的には使われないようです**/
    $objProps = $objExcel->getProperties();
    $objProps->setCreator("杨本木");
    $objProps->setLastModifiedBy("杨本木");
    $objProps->setTitle("杨本木");
    $objProps->setSubject("杨本木");
    $objProps->setDescription("杨本木");
    $objProps->setKeywords("杨本木");
    $objProps->setCategory("杨本木");
    //**************************************
    //後続のコンテンツ操作のために現在のシート インデックスを設定します。       
    //通常、明示的な呼び出しは複数のシートを使用する場合にのみ必要です。       
    //デフォルトでは、PHPExcel は最初のシートを自動的に作成し、SheetIndex=0 を設定します。
    $objExcel->setActiveSheetIndex(0);
    $objActSheet = $objExcel->getActiveSheet();
    // 現在アクティブなシートの名前を設定します
    $objActSheet->setTitle('現在のシート名');
    //幅を設定します。EXCELの幅よりも少し小さい値です。単位はわかりません。
    //$objActSheet->getColumnDimension('A')->setWidth(20);
    //$objActSheet->getRowDimension(1)->setRowHeight(30);
    //セルの値を設定します
    $objActSheet->setCellValue('A1', 'タイトル合計表示');
    /*
    //スタイルを設定する
    $objStyleA1 = $objActSheet->getStyle('A1');
    $objStyleA1->getAlignment()->sethorizo​​ntal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
    $objFontA1 = $objStyleA1->getFont();
    $objFontA1->setName('宋体');
    $objFontA1->setSize(18);
    $objFontA1->setBold(true);
    //列の配置を設定する
    $objActSheet->getStyle('D')->getAlignment()->sethorizo​​ntal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);*/
   //============最初==================================
    $ベンム=1;
    $objActSheet->setCellValue('A1', '行标签列标签');
    foreach($jq as $k=>$v){
    $objActSheet->setCellValue(get_excel_row($benmu).'1', $v);
    $ベンム+=1;
    }
    $objActSheet->setCellValue(get_excel_row($benmu).'1', '总计');

    //設置度
       for($i=0;$igetColumnDimension(get_excel_row($i))->setWidth(20);
         //宽度
         $objActSheet->getStyle(get_excel_row($i)."1")->getAlignment()->sethorizo​​ntal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
         $objActSheet->getStyle(get_excel_row($i))->getAlignment()->sethorizo​​ntal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
         //颜色
         $objActSheet->getStyle(get_excel_row($i)."1")->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID);
         $objActSheet->getStyle(get_excel_row($i)."1")->getFill()->getStartColor()->setARGB(COLOR1);
       }
    //==============内容=================
    $y=2;
    foreach($re as $k1=>$v1){ //$k1 全部が A2 にあります。。。。後ろの k1 は電話番号、v1 は人》の数字です
     $objActSheet->setCellValue('A'.$y, $k1);
     //色
     $objActSheet->getStyle('A'.$y)->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID);
      $objActSheet->getStyle('A'.$y)->getFill()->getStartColor()->setARGB(COLOR1);

       foreach($jq as $k2=>$v2){ //k2 は 0、v2 は人
        foreach($v1 as $k3=>$v3){ //$k3 は人物、$v3 は希望の値
            if($k3==$v2){
              //$objActSheet->setCellValue(get_excel_row("1"+$k2).$y,$v1[$k3]);
$objActSheet->setCellValueExplicit(get_excel_row("1"+$k2).$y,$v1[$k3],PHPExcel_Cell_DataType::TYPE_STRING);
            }
         }
       }
      $objActSheet->setCellValue(get_excel_row("1"+count($jq)).$y, $num[$k1]);
      $y+=1;
    }
    //=================最後==========
    $objActSheet->setCellValue("A".$y,"Total");
    //色
    $objActSheet->getStyle("A".$y)->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID);
    $objActSheet->getStyle("A".$y)->getFill()->getStartColor()->setARGB(COLOR1);

    foreach($jq as $k=>$v){ //k は人です
     $objActSheet->setCellValue(get_excel_row("1"+$k).$y,$c[$v]);
     //色
     $objActSheet->getStyle(get_excel_row("1"+$k).$y)->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID);
      $objActSheet->getStyle(get_excel_row("1"+$k).$y)->getFill()->getStartColor()->setARGB(COLOR1);

    }
    $objActSheet->setCellValue(get_excel_row("1"+count($jq)).$y,$all_nums);
    //色
    $objActSheet->getStyle(get_excel_row("1"+count($jq)).$y)->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID);
    $objActSheet->getStyle(get_excel_row("1"+count($jq)).$y)->getFill()->getStartColor()->setARGB(COLOR1);
    //================================

    //出力内容
    $outputFileName =time().".xls";
    
    header("プラグマ: public");
  
    header("有効期限: 0");
  
    header("キャッシュ制御:必須再検証、事後チェック = 0、事前チェック = 0");
  
    header("Content-Type:application/force-download");

    header("Content-Type:application/octet-stream");
  
    header("Content-Type:アプリケーション/ダウンロード");
  
    header('Content-Disposition:attachment;filename='.$outputFileName.'');
  
    header("コンテンツ転送エンコーディング:バイナリ");
  
    $objWriter->save('php://output');
    ?>
 <div class="clear"></div>
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。