• PHPExcel 生成图形报表


    db.php为数据库操作类, $config为数据库配置,PHPExcel版本为PHPExcel_1.8.0,  PHP代码:

    $dir = dirname(__FILE__);
    require $dir . "/PHPExcel/db.php";
    require $dir . "/PHPExcel/PHPExcel.php";
    $object = new PHPExcel();
    $db = new db($config);
    $objSheet = $object->getActiveSheet();
    
    //生成表格
    $array = array(
        array("", "一班", "二班", "三班",),
        array("不及格", 20, 30, 40),
        array("良好", 30, 50, 55),
        array("优秀", 15, 17, 20)
    );
    $objSheet->fromArray($array);
    
    //取出每个班级成绩的所在列
    $dataseriesLabels = 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),    //    三班
    );
    
    //不及格、良好、优秀所在单元格
    $xAxisTickValues = array(
        new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$A$2:$A$5', NULL, 4),    //    A2 to A5
    );
    
    //取出每个班级成绩数据的所在列
    $dataSeriesValues = array(
        new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$B$2:$B$5', NULL, 4),
        new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$C$2:$C$5', NULL, 4),
        new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$D$2:$D$5', NULL, 4),
    );
    
    
    $series = new PHPExcel_Chart_DataSeries(
        PHPExcel_Chart_DataSeries::TYPE_LINECHART,        // 制图类型
        PHPExcel_Chart_DataSeries::GROUPING_STACKED,    // plotGrouping
        range(0, count($dataSeriesValues)-1),            // plotOrder
        $dataseriesLabels,                                // plotLabel
        $xAxisTickValues,                                // plotCategory
        $dataSeriesValues                                // plotValues
    );
    
    //    Set the series in the plot area
    $plotarea = new PHPExcel_Chart_PlotArea(NULL, array($series));
    //    Set the chart legend
    $legend = new PHPExcel_Chart_Legend(PHPExcel_Chart_Legend::POSITION_TOPRIGHT, NULL, false);
    
    $title = new PHPExcel_Chart_Title('测试制作线性图');
    $yAxisLabel = new PHPExcel_Chart_Title('Value ($k)');
    
    
    //    Create the chart
    $chart = new PHPExcel_Chart(
        'chart1',        // name
        $title,            // title
        $legend,        // legend
        $plotarea,        // plotArea
        true,            // plotVisibleOnly
        0,                // displayBlanksAs
        NULL,            // xAxisLabel
        $yAxisLabel        // yAxisLabel
    );
    
    //设置图形的所在区域
    $chart->setTopLeftPosition('A7');
    $chart->setBottomRightPosition('H20');
    
    
    $objSheet->addChart($chart);
    
    header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
    header('Content-Disposition: attachment;filename="03simple.xlsx"');
    header('Cache-Control: max-age=0');
    
    $objWriter = PHPExcel_IOFactory::createWriter($object, 'Excel2007');
    $objWriter->setIncludeCharts(TRUE);
    $objWriter->save('php://output');

    效果图:

  • 相关阅读:
    雷军复盘小米下滑原因:线上遭恶性竞争 线下错过县乡市场(小米是手机公司,也是移动互联网公司,更是新零售公司)
    Web前端开发人员实用Chrome插件收集
    批量删除C和C++注释
    一个Windows C++的线程类实现(封装API,形成一个类,但不完善。其实可以学习一下Delphi的TThread的写法)
    协程在Web服务器中的应用(配的图还不错)
    MVC OR API的接口
    Core MVC
    WCF SOAP
    标签辅助类
    构建微服务:Spring boot
  • 原文地址:https://www.cnblogs.com/Caoxt/p/4635235.html
Copyright © 2020-2023  润新知