PHP通过PHPExcel导出表格

2018-04-25  本文已影响0人  yzw12138

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
上一篇下一篇

猜你喜欢

热点阅读