Heim  >  Artikel  >  Backend-Entwicklung  >  phpexcel 导出 颜色有关问题

phpexcel 导出 颜色有关问题

WBOY
WBOYOriginal
2016-06-13 13:06:54862Durchsuche

phpexcel 导出 颜色问题
用phpexcel做导出的excel的颜色怎么和网页中的颜色显示不一致呢?

PHP code
<!--

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';
    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;

//去除数组中相同的值

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();
    // 创建文件格式写入对象实例, uncomment
    $objWriter = new PHPExcel_Writer_Excel5($objExcel);
    //设置文档基本属性/**似乎一般情况下用不到**/
    $objProps = $objExcel->getProperties();
    $objProps->setCreator("杨本木");
    $objProps->setLastModifiedBy("杨本木");
    $objProps->setTitle("杨本木");
    $objProps->setSubject("杨本木");
    $objProps->setDescription("杨本木");
    $objProps->setKeywords("杨本木");
    $objProps->setCategory("杨本木");
    //*************************************       
    //设置当前的sheet索引,用于后续的内容操作。       
    //一般只有在使用多个sheet的时候才需要显示调用。       
    //缺省情况下,PHPExcel会自动创建第一个sheet被设置SheetIndex=0       
    $objExcel->setActiveSheetIndex(0);       
    $objActSheet = $objExcel->getActiveSheet();          
    //设置当前活动sheet的名称       
    $objActSheet->setTitle('当前sheetname');   
    //设置宽度,这个值和EXCEL里的不同,不知道是什么单位,略小于EXCEL中的宽度   
    //$objActSheet->getColumnDimension('A')->setWidth(20); 
    //$objActSheet->getRowDimension(1)->setRowHeight(30);  //高度
    //设置单元格的值     
    $objActSheet->setCellValue('A1', '总标题显示'); 
    /*
    //设置样式   
    $objStyleA1 = $objActSheet->getStyle('A1');       
    $objStyleA1->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);   
    $objFontA1 = $objStyleA1->getFont();       
    $objFontA1->setName('宋体');       
    $objFontA1->setSize(18);     
    $objFontA1->setBold(true); 
    //设置列居中对齐   
    $objActSheet->getStyle('D')->getAlignment()->setHorizontal(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', '总计');

    //设置宽度
       for($i=0;$igetColumnDimension(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);
       }
    //==============content=================
    $y=2;
    foreach($re as $k1=>$v1){    //$k1全部放在A2。。。。后面,k1为电话号码、v1为person-》数字
     $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是person
        foreach($v1 as $k3=>$v3){    //$k3为person,$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,"总计");
    //颜色
    $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为person
     $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("Pragma: public");   
  
    header("Expires: 0");   
  
    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');
    ?>
 <div class="clear">
                 
              
              
        
            </div>
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn