gpt4 book ai didi

php - 将样式从一行复制并粘贴到另一行

转载 作者:可可西里 更新时间:2023-11-01 13:00:10 27 4
gpt4 key购买 nike

我正在使用 PHP Excel使用模板 Excel 文件创建 Excel。问题是我有一个数据网格,我在模板中设置了标题和第一行的样式。这是它的样子:

template

最左上角的坐标是C49。

如果我有 100 行,我需要复制第一行的样式并粘贴 100 次。这是我的代码

$cstart = 2;
$rstart = 49;
$count = 1;
$input = $worksheet->getStyle(num2char($cstart) . $rstart);

foreach ($b_data['rawData'] as $value) {
$worksheet->setCellValueByColumnAndRow($cstart, $rstart, $count++)
->setCellValueByColumnAndRow($cstart + 1, $rstart, $value['key'])
->setCellValueByColumnAndRow($cstart + 5, $rstart, $value['value']);
$interval = num2char($cstart) . $rstart . ':' . num2char($cstart+5) . $rstart;
$worksheet->duplicateStyle($input, $interval);

$rstart++;
}

function num2char($num) {
$numeric = $num % 26;
$letter = chr(65 + $numeric);
$num2 = intval($num / 26);
if ($num2 > 0) {
return num2char($num2 - 1) . $letter;
} else {
return $letter;
}
}

但是,我有以下问题:

enter image description here

但我期望的是:

enter image description here

是 bug 还是我做错了什么?

最佳答案

正如马克在评论中指出的那样;合并的单元格是结构性的,而不是样式。所以复制样式不会自动复制合并的单元格。

有一个feature request能够复制包括合并单元格在内的整行


处理此问题的一种方法是使用 isInMergeRange() 函数检查单元格是否是合并的一部分,如下所示:

$workbook = new PHPExcel;              // prepare the workbook 
$sheet = $workbook->getActiveSheet(); // get the sheet
$sheet->mergeCells('A1:E1'); // merge some cells for tesing
$cell = $sheet->getCell('A1'); // get a cell to check if it is merged
$cell->isInMergeRange() // check if cell is merged

^这将返回一个 bool 值,指示它是否是合并单元格的一部分。


您可能感兴趣的另一个函数是 isMergeRangeValueCell() 函数:

$cell->isMergeRangeValueCell()

^这将返回一个 bool 值,指示它是合并单元格的一部分并且该单元格包含合并范围的值;它在所有其他情况下返回 false。

关于php - 将样式从一行复制并粘贴到另一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18800157/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com