PHPExcel-colspan主题名称

PHPExcel-colspan主题名称,php,phpexcel,Php,Phpexcel,表名:主题 我的预期输出 我的代码 <?php //dbconnection $q = "SELECT name FROM subject"; $r = mysqli_query($dbc, $q); while($row = mysqli_fetch_array($r, MYSQLI_ASSOC)) { $name[] = $row['name']; } $objPHPExcel = new PHPExce

表名:主题

  • 我的预期输出

  • 我的代码

    <?php
        //dbconnection
    
        $q = "SELECT name FROM subject";
        $r = mysqli_query($dbc, $q);
    
        while($row = mysqli_fetch_array($r, MYSQLI_ASSOC))
        {
            $name[] = $row['name'];
        }
    
        $objPHPExcel = new PHPExcel();
        $objPHPExcel->setActiveSheetIndex(0);
    
        $headers = array('School Name');
        $objPHPExcel->getActiveSheet()->fromArray($headers, null, 'A1');
        $objPHPExcel->getActiveSheet()->fromArray($name, null, 'B1');
    
        $objPHPExcel->getActiveSheet()->mergeCells('B1:C1');
        $objPHPExcel->getActiveSheet()->mergeCells('D1:E1');
        $objPHPExcel->getActiveSheet()->mergeCells('F1:G1');
        $objPHPExcel->getActiveSheet()->mergeCells('H1:I1');
    ?>
    
    
    
  • 我想为每个主题设置colspan=2。我不想写4行代码。我尝试使用for循环,如下所示:

    $objWorksheet = $objPHPExcel->getActiveSheet();
    
    $row = 1;
    $highestColumn = $objWorksheet -> getHighestColumn();
    $highestColumn++;
    
    for($column = 'A'; $column != $highestColumn; $column++)
    {
        if($column <= 'C')
        {
            //[HERE]
        }
    }
    
    $objWorksheet=$objPHPExcel->getActiveSheet();
    $row=1;
    $highestColumn=$objWorksheet->getHighestColumn();
    $highestColumn++;
    对于($column='A';$column!=$highestColumn;$column++)
    {
    
    如果($column在主题列表上循环执行此操作可能要容易得多:

    $objPHPExcel = new PHPExcel();
    $objPHPExcel->setActiveSheetIndex(0);
    $objPHPExcel->getActiveSheet()->setCellValue('A1', 'School Name');
    $objPHPExcel->getActiveSheet()->mergeCells('A1:A2');
    
    $column = 'B';
    while($row = mysqli_fetch_array($r, MYSQLI_ASSOC))
    {
        $objPHPExcel->getActiveSheet()->setCellValue($column.'1', $row['name']);
        $mergeRange = $column.'1:';
        $objPHPExcel->getActiveSheet()->setCellValue($column.'2', 'Student Name');
        $column++;
        $mergeRange .= $column.'1';
        $objPHPExcel->getActiveSheet()->setCellValue($column.'2', 'Grade');
        $objPHPExcel->getActiveSheet()->mergeCells($mergeRange);
        $column++;
    }
    

    如果跨越一列/行,则跨越单元格的地址是该跨越单元格左上角的地址,因此,如果跨越B1->C1以生成单个“两列”单元格,则地址仍然是B1,而C1被隐藏/抑制