如何使用循环在 phpspreadsheet 单元格中写入

时间:2021-07-10 11:07:01

标签: php loops phpspreadsheet

我想制作像 enter image description here 这样的 phpspreadsheet 我试过下面的代码

   foreach( range('A','C') as $ro) { 
        $r= $ro . "4";    
    $sheet->setCellValue($r,'Sn');
    $sheet->setCellValue($r,'Name');
    $sheet->setCellValue($r,'Title');
    }

但它显示为 enter image description here

那么,如何获得我想要的 Excel 表格

1 个答案:

答案 0 :(得分:1)

是否有理由不使用循环?

$sheet->setCellValue('A4','Sn');
$sheet->setCellValue('B4','Name');
$sheet->setCellValue('C4','Title');

问题在于,对于 foreach 循环中的每次迭代,您都在替换同一单元格的值。

在第一次迭代中,我们将有 $r = 'A4'。然后将 A4 设置为“Sn”。之后,您将 A4 设置为“名称”,然后将 A4 设置为“标题”。到那时,您已经为这次迭代替换了同一个单元格的内容 3 次。

所以最好跳过循环。

如果您坚持循环,您可以引入将特定列映射到特定值的逻辑,但除非您涉及其他特定逻辑,否则解决方案确实过于复杂


如果你想因为很多列名而循环,我建议你循环一个列数组。如果您使用普通数组,它将是零索引的,这意味着您可以使用 chr() 函数通过将 65 添加到索引来将其映射到适当的字符。请注意,这仅适用于 26 列或更少。

$columns = ['Sn', 'Name', 'Title'];

foreach ($columns as $index => $column) {
  $cell = chr($index + 65) . "4";

  $sheet->setCellValue($cell, $column);
}

您也可以使用关联数组并将列作为数组的键 - 这适用于任意数量的列(但您仍然必须定义映射)

$columns = [
  'A' => 'Sn',
  'B' => 'Name',
  'C' => 'Title'
];

foreach ($columns as $index => $column) {
  $sheet->setCellValue($index."4", $column);
}
相关问题