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

how write in phpspreadsheet cell by using loop

我想让 phpspreadsheet 像 我试过下面的代码

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

但显示为

那么,怎样才能得到我想要的excelsheet

你有什么理由不在没有循环的情况下这样做吗?

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

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

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

所以最好跳过循环。

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


如果因为列名多而要循环,建议循环一个列数组。如果您使用普通数组,它将是 zero-indexed,这意味着您可以通过向索引添加 65 来使用 chr() 函数将其映射到适当的字符。请注意,这仅适用于 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);
}