美文网首页
PHP通过PHPExcel导出表格

PHP通过PHPExcel导出表格

作者: yzw12138 | 来源:发表于2018-04-25 23:22 被阅读0次

    1、下载PHPExcel类库,引入项目中。
    2、创建一个新的controller,引入PHPExcel文件

    require_once APPPATH . 'libraries/PHPExcel.php'; 
    require_once APPPATH . 'libraries/PHPExcel/Writer/Excel2007.php'; 
    

    3、创建一个新的PHPExcel对象

    $objPHPExcel = new PHPExcel();
    

    4、向表格中添加数据

    // 添加单条数据
    $objPHPExcel->getActiveSheet()->setCellValue('A' . ($i + 1), '姓名');
    
    // 循环添加数据
    // 由于表格横向是A、B、C......进行排序的,所以无法直接循环进行添加数据,
    // 因此利用PHP的chr函数将A、B、C......等英文字母转成ASCII码进行循环添加
    // 横向添加表头
    for ($i = 67; $i < (count($items) + 67); $i++)
    {
        if ($i > 90)
        {
            $objPHPExcel->getActiveSheet()->setCellValue('A' . chr($i-25) . '1', $items[$i-66]['title']);
        }
        else
        {
            $objPHPExcel->getActiveSheet()->setCellValue(chr($i) . '1', $items[$i - 67]['title']);
        }
    }
    // 纵向添加数据
    for($i = 0; $i < count($appraise_list); $i++)
    {
        if ($i == 0)
        {
            $objPHPExcel->getActiveSheet()->setCellValue('A' . ($i + 1), '姓名');
            $objPHPExcel->getActiveSheet()->setCellValue('B' . ($i + 1), '学号');  
            $objPHPExcel->getActiveSheet()->setCellValue(chr(count($items) + 67) . ($i + 1), '评分');            
        }
        $objPHPExcel->getActiveSheet()->setCellValue('A' . ($i + 2), $appraise_list[$i]['full_name']);
        $objPHPExcel->getActiveSheet()->setCellValue('B' . ($i + 2), $appraise_list[$i]['student_no']);
        if (isset($score_map[$appraise_list[$i]['team_id']]))
        {
            $objPHPExcel->getActiveSheet()->setCellValue(chr(count($items) + 67) . ($i + 2), $score_map[$appraise_list[$i]['team_id']]);
        }
        else
        {
            $objPHPExcel->getActiveSheet()->setCellValue(chr(count($items) + 67) . ($i + 2), '尚无评分');                
        }
        for ($j = 67; $j < (count($items) + 67); $j++)
        {
            if (isset($score_map[$appraise_list[$i]['team_id'] . $items[$j - 67]['id']]))
            {
                $objPHPExcel->getActiveSheet()->setCellValue(chr($j) . ($i + 2), $score_map[$appraise_list[$i]['team_id'] . $items[$j - 67]['id']]);                  
            }
            else
            {
                $objPHPExcel->getActiveSheet()->setCellValue(chr($j) . ($i + 2), '-');
            }
        }
    }
    

    5、设置导出表格的格式

    // 设置居中
    $objPHPExcel->getActiveSheet()->getStyle('A1:' . chr(count($items) + 67) . (count($appraise_list) + 1))->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
    // 所有垂直居中
     $objPHPExcel->getActiveSheet()->getStyle('A1:' . chr(count($items) + 67) . (count($appraise_list) + 1))->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
    // 合并单元格
     $PHPExcel->getActiveSheet()->mergeCells('A1:A3');
    

    6、最后导出表格样式


    image.png

    相关文章

      网友评论

          本文标题:PHP通过PHPExcel导出表格

          本文链接:https://www.haomeiwen.com/subject/csrikftx.html