如何使用循环在 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);
}
我想让 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);
}