根据循环

时间:2018-06-02 18:05:48

标签: php phpexcel

我最初设置$rowID值是第一次初始化循环结果集。

在给定条件下,$rowID的值需要重新设置为其他值,以便下一次循环运行将使用该值。

这是我的代码:

$col = 'A';
$last_grid_row = 0; /* this is what I tried */
foreach($records as $key=>$item)
{
    $rowID = 1;
    if($key % 4 == 0):
        $col = 'A';
        $rowID = $last_grid_row; /* this is what I tried */
    endif;
    $rowID = $rowID; /* this is what I tried */

    /* cell value assigning */
    $objPHPExcel->getActiveSheet()->setCellValue($col.$rowID, $item['date']);
    $objPHPExcel->getActiveSheet()->getColumnDimension($col)->setWidth(40);

    $menu_items = unserialize($item['lunch_items']);

    foreach($menu_items as $list):
        $last_grid_row = $rowID++;
        $objPHPExcel->getActiveSheet()->setCellValue($col.$rowID, $list);
    endforeach;
    $col++;    
}

这是我在excel中尝试实现的目标:

A     |  B     |  C     |  D
-------------------------------
2018  |  2019  |  2020  |  2021
ram   |  sam   |  dam   |  ham
bam   |  cam   |  lam   |  kam
jam   |  nam   |  pam   |  nam   <- last_row 

2022  |  2023  |  2024  |  2025
ram   |  sam   |  dam   |  ham
bam   |  cam   |  lam   |  kam
jam   |  nam   |  pam   |  nam

在每第四列记录之后,我想将下一条记录移至第一列“A”,并将行值rowID初始化为前一网格中的last_row值。

所以下一个网格,第五个记录可以从列'A'再次开始,然后是下一个行。

我希望我说清楚。

1 个答案:

答案 0 :(得分:0)

也许这样的事情会起作用。

我使用数组块只循环当时的四年,并在每次迭代时重置列 然后我嵌套另一个输出四个子数组的循环。

$rowoffset =0;
Foreach(array_chunk($records,4) as $items){
    $col =1;
    Foreach($items as $rowID => $val){
        $row = $rowID+1+$rowoffset;
        $objPHPExcel->getActiveSheet()->setCellValue($col.$row, $item['date']);
        $objPHPExcel->getActiveSheet()->getColumnDimension($col)->setWidth(40);
    }
    $rowoffset = $rowID +3;
    $col++;
}

这有点简化,但更多的是显示逻辑而不是完美的答案 一个只回显它在

上打印的行的例子

https://3v4l.org/mge06