-
- require_once './PHPExcel.php';
- require_once './Excel5.php';
- require_once './get_excel_row.php';
- require "../include/base.php ";
- require "../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;
- //同じ値を削除しますarray
- 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->gt; setLastModifiedBy("楊弁夢" ");
- $objProps->setTitle("杨本木");
- $objProps->setSubject("杨本木");
- $objProps->setDescription("杨本木");
- $ objProps->setKeywords( "杨本木");
- $objProps->setCategory("杨本木");
- //****************************************
- //後続のコンテンツ操作のために現在のシート インデックスを設定します。
- //通常、表示呼び出しは複数のシートを使用する場合にのみ必要です。
- //デフォルトでは、PHPExcel は SheetIndex=0 で最初のシートを自動的に作成します
- $objExcel->setActiveSheetIndex(0);
- $objActSheet = $objExcel->getActiveSheet();
- //現在の名前を設定しますアクティブシート
- $objActSheet->setTitle('currentsheetname');
- //幅を設定します。単位はわかりませんが、幅より少し小さいです。 EXCEL 内
- //$objActSheet->getColumnDimension('A')->setWidth(20);
- //$objActSheet->getRowDimension(1)->setRowHeight(30); //Height
- //セルの値を設定
- $objActSheet ->setCellValue('A1', 'タイトル合計表示');
- /*
- //スタイルを設定
- $objStyleA1 = $objActSheet->getStyle('A1');
- $objStyleA1->getAlignment()- >sethorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
- $objFontA1 = $objStyleA1->getFont();
- $objFontA1->setName('夏体');
- $objFontA1-> ;setSize(18);
- $objFontA 1 ->setBold(true);
- //列の中央揃えを設定します
- $objActSheet->getStyle('D')->getAlignment()->set水平(PHPExcel_Style_Alignment: :HORIZONTAL_CENTER);
- */
- //------------- --first--- ------------------
- $benmu=1;
- $objActSheet->setCellValue('A1', '行ラベル列ラベル');
- foreach($jq as $k=>$v){
- $objActSheet->setCellValue(get_excel_row($benmu).'1', $v);
- $benmu+=1;
- }
- $objActSheet-> ;setCellValue(get_excel_row($ benmu).'1', 'Total');
- //幅を設定します
- for($i=0;$i$objActSheet-> getColumnDimension(get_excel_row($i) )->setWidth(20);
- //Width
- $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);
- //Color
- $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);
- //Color
- $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;
- }
- //-----------------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("Expires: 0");
- header("Cache-Control:must-revalidate、post-check =0、事前チェック=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 では正しい色が表示されません。
まず、次のように赤色を定義して、何が表示されるかを確認します。
しかし、その結果、青は Excel では紫に似た色として表示されるように定義されており、とにかくページに表示される色ではないことがわかります。
このコードを見てください: $objActSheet->getStyle(‘A’.$y)->getFill()->getStartColor()->setARGB(COLOR1);
ARGB が原因である可能性を考慮して、色の前に 2 桁の 00 を追加してみてください。この形式は argb(128,255,0,0) のようになります。テスト後、この問題を解決できます。 , 透明度に関しては確かに4ビット色固定が増えていることが分かりました。
|