phpexcel でエクスポートされた色に関するいくつかの問題について、phpexcel を使用してエクスポートされた Excel の色が Web ページに表示される色と一致しないのはなぜですか?何が起こっているのか知りたいですか?どうやって解決すればいいのでしょうか? PHP コードの詳細は次のとおりです。
PHP コード:
コードをコピー コードは次のとおりです:
require_once './PHPExcel.php';
require_once './Excel5.php';
require_once './get_excel_row.php';
「../include/base.php」が必要です。
「../include/function/006/creatExcelDb.php」が必要です。
define("COLOR1","#96B7F6");
//查处処理データ架===
$q = $db->query("select * from oa_event_sales");
while($a = $db->fetch_array($q)){
$list[] = $a;
}
$ce = new creatExcelDb();
$re = $ce->_run($list,'served_time','client_status','oid');
$all_nums=0;
$num=array();
foreach($re as $k=>$v){
$num[$k]=count($re[$k]);
$all_nums =count($re[$k]);
}
$jq = array();
$title1 = client_status;
$title2 = fin_confirm;
$title3 = oid;
//去除数组中同然值
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 = new PHPExcel();
// 创建文件格式書入对オブジェクト实例、コメント解除
$objWriter = new 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('currentsheetname');
// この値は EXCEL の値とは異なります。単位は EXCEL
//$objActSheet->getColumnDimension('A')->setWidth(20); の幅よりわずかに小さくなります。 >setRowHeight(30) ); //高さ
//セルの値を設定します
$objActSheet->setCellValue('A1', '合計タイトル表示'); >// スタイルを設定します
$objStyleA1 = $objActSheet->getStyle('A1');
$objStyleA1->getAlignment()->sethorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); objFontA1 = $objStyleA1->getFont ();
$objFontA1->setName('宋体');
$objFontA1->setBold(true) );
//列の中央揃えを設定します
$objActSheet->getStyle('D')->getAlignment()->sethorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);*/
//============最初==================== ===============
$benmu=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;$i<$benmu 1;$i ){
$objActSheet->getColumnDimension(get_excel_row($i))->setWidth(20) );
//宽度
$objActSheet->getStyle(get_excel_row($i)."1")->getAlignment()->sethorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objActSheet->getStyle(get_excel_row($i))->getAlignment()->sethorizontal(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 は人です-》Number
$objActSheet->setCellValue('A'.$y, $k1); 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]); 1;
}
//=================last=========
$objActSheet->setCellValue( "A" .$y,"Total");
//Color
$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]);
//Color
$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);
//Color
$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("Pragma: public");
header("Cache-Control:must-revalidate, post-check =0, pre-check=0");
header("Content-Type:application/force-download");
header("Content-Type:application/octet-stream");
header("Content-Type:application/download");
header('Content-Disposition:attachment;filename='.$outputFileName.'');
header("Content-Transfer -Encoding:binary" );
$objWriter->save('php://output');
?>
上記のコードでは、色は定義されていますエクスポートされた Excel にはありません。色は正しく表示されていますか?理由は何ですか?なぜでしょうか?
まず、次のように赤色を定義して、表示される内容を確認します。とにかく色がページに表示されている色ではなく、不可解すぎます。 。 。 。 。
このコードを見てください: $objActSheet->getStyle('A'.$y)->getFill()->getStartColor()->setARGB(COLOR1); ARGB の理由で、色の前に 2 桁の 00 を追加してみます。これが機能するかどうかはわかりませんが、最初に効果を試してみます。この形式は argb(128,255,0,0) のようになります。透明度については、後でテストしたところ、確かに透明度を高める 4 ビットの色固定であることがわかりました。