我想使用PHPEXCEl根据计数动态合并单元格。
例如:
如果$count = 2;
我要合并两个单元格,如下所示,
$objPHPExcel->getActiveSheet()->mergeCells('A1:B1');
类似地,如果$count = 4;
$objPHPExcel->getActiveSheet()->mergeCells('C1:F1');
类似地,如果$count = 5;
$objPHPExcel->getActiveSheet()->mergeCells('G1:K1');
我想循环获得此逻辑。
我尝试了以下逻辑,但这不起作用
$count = ew_Execute("SELECT COUNT(*) FROM ems_defects_codes WHERE DEF_CODE = '$def_code'");
$start_letter = A;
$rowno = 1;
for ($i = 0; $i < $count ; $i++) {
$objPHPExcel->getActiveSheet()->mergeCells($start_letter.$rowno.':'.$i.$rowno);
}
任何帮助将不胜感激。谢谢!!!
答案 0 :(得分:1)
您需要获取输入的列范围字符串值-start_letter,row_number和count。一旦列范围可用,就可以在PHPExcel mergeCells函数中使用相同的列范围。这是获取列范围的示例代码:
function getColRange($start_letter, $row_number, $count) {
$alphabets = range('A', 'Z');
$start_idx = array_search(
$start_letter,
$alphabets
);
return sprintf(
"%s%s:%s%s",
$start_letter,
$row_number,
$alphabets[$start_idx + $count],
$row_number
);
}
print getColRange('A', 1, 2) . PHP_EOL;
print getColRange('C', 1, 4) . PHP_EOL;
print getColRange('G', 1, 4) . PHP_EOL;
输出
A1:C1
C1:G1
G1:K1
此外,您可以将此新功能与代码一起使用以进行实际合并。您可以选择调用此函数或循环调用。
$sheet = $objPHPExcel->getActiveSheet();
$sheet->mergeCells(
getColRange(
$start_letter,
$row_number,
$count
)
);
答案 1 :(得分:0)
问题是循环内的$i
总是整数。您需要通过创建字母数组将整数转换为相应的字母索引。这可以通过简单的range('A', 'Z')
完成。
您还需要将A
中的$start_letter
用撇号引起来(如'A'
),并且现在已经创建了范围,您只需将字母的索引用于:
$start_letter = 0
(后来变成'A'
的{{1}})。
然后,您需要在计数中添加以获取$alphabet[$start_letter]
中的结束单元格。您的起始单元格现在变成mergeCells()
,而您的结束单元格现在变成$alphabet[$start_letter] . $rowno
。
这可以在下面看到:
($alphabet[$start_letter] + $alphabet[$i]) . $rowno