zoukankan      html  css  js  c++  java
  • PHPExcel生成图表(转载)

    PHPExcel下载

    生成折线图示例:

    <?php  
        $dir = dirname(__FILE__);  
        require $dir."/db.php";  
        require $dir."/PHPExcel.php";  
      
        $db = new db($phpexcel);  
        $objPHPExcel = new PHPExcel();  
        $objSheet = $objPHPExcel->getActiveSheet();  
      
        $data = array(  
            array("","一班","二班","三班"),  
            array("不及格",20,30,40),  
            array("良好",30,50,70),  
            array("优秀",14,12,30)  
        );  
        $objSheet->fromArray($data);  
      
        //图表  
        $labels = array(  
            new PHPExcel_Chart_DataSeriesValues('String','Worksheet!$B$1',null,1),//一班  
            new PHPExcel_Chart_DataSeriesValues('String','Worksheet!$C$1',null,1),//二班  
            new PHPExcel_Chart_DataSeriesValues('String','Worksheet!$D$1',null,1),//三班  
        );  
        $xLabels = array(  
            new PHPExcel_Chart_DataSeriesValues('String','Worksheet!$A$2:$A$4',null,3),//取x轴刻度  
        );  
        $datas = array(  
            new PHPExcel_Chart_DataSeriesValues('Number','Worksheet!$B$2:$B$4',null,3),//取一班数据  
            new PHPExcel_Chart_DataSeriesValues('Number','Worksheet!$C$2:$C$4',null,3),//取二班数据  
            new PHPExcel_Chart_DataSeriesValues('Number','Worksheet!$D$2:$D$4',null,3),//取三班数据  
        );  
      
        $series = array(  
            new PHPExcel_Chart_DataSeries(  
                PHPExcel_Chart_DataSeries::TYPE_LINECHART,  
                PHPExcel_Chart_DataSeries::GROUPING_STANDARD,  
                range(0, count($labels)-1),  
                $labels,  
                $xLabels,  
                $datas  
            )  
        ); //图表框架  
      
        $layout=new PHPExcel_Chart_Layout();  
        $layout->setShowVal(true);  
        $areas = new PHPExcel_Chart_PlotArea($layout,$series);  
        $legend = new PHPExcel_Chart_Legend(PHPExcel_Chart_Legend::POSITION_RIGHT,$layout,false);  
        $title = new PHPExcel_Chart_Title("高一学生成绩分布");  
        $ytitle = new PHPExcel_Chart_Title("人数");  
        $chart = new PHPExcel_Chart('line_chart',$title,$legend,$areas,true,false,null,$ytitle);  
        $chart->setTopLeftPosition("A7")->setBottomRightPosition("K25"); //图表位置  
      
        $objSheet->addChart($chart);  
      
      
        $excel = 'Excel2007';  
        $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel,$excel);  
        $objWriter->setIncludeCharts(true); //图表必须  
        // $objWriter->save($dir.'/export.xls'); //生成excel文件  
        browser_export($excel,"browser_chart.xlsx"); //浏览器输出  
      
        SaveViaTempFile($objWriter);  
      
        function browser_export($type, $filename){  
            if($type == "Excel5"){  
                header('Content-Type: application/vnd.ms-excel'); //excel2003  
            }else{  
                header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); //excel2007  
            }  
            header('Content-Disposition: attachment;filename="'.$filename.'"');  
            header('Cache-Control: max-age=0');  
        }  
      
        /*解决Excel2007不能导出*/  
        function SaveViaTempFile($objWriter){  
            $filePath = dirname(__FILE__) . rand(0, getrandmax()) . rand(0, getrandmax()) . ".tmp";  
            $objWriter->save($filePath);  
            readfile($filePath);  
            unlink($filePath);  
        }  

    效果图:

  • 相关阅读:
    jQuery1.3.2 源码学习8 index 函数
    转发:在 IE 和 FireFox 中 Javascript 代码的调试视频
    关于 Fiddler 使用的两个常见问题的解决视频
    jQuery1.3.2 源码学习7 setArray,each 函数
    一个 Free 的 Web Server
    服务器端编程的10大性能问题
    Windows Socket五种I/O模型——代码全攻略
    几种winsock I/O模型的分析
    小谈Onlinegame服务器端设计(3)
    [转载]理解 I/O Completion Port (IOCP完成端口)
  • 原文地址:https://www.cnblogs.com/zhuhua-php/p/9014105.html
Copyright © 2011-2022 走看看