我最初设置$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'再次开始,然后是下一个行。
我希望我说清楚。
答案 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++;
}
这有点简化,但更多的是显示逻辑而不是完美的答案 一个只回显它在
上打印的行的例子