gpt4 book ai didi

PHPExcel快速重复行

转载 作者:可可西里 更新时间:2023-10-31 22:10:56 24 4
gpt4 key购买 nike

我为每个单元格设置了不同样式的行。我需要复制它(复制文本、样式、大小)。

我正在使用以下函数来做到这一点:

  function copyRowFull(&$ws_from, &$ws_to, $row_from, $row_to) {
$ws_to->getRowDimension($row_to)->setRowHeight($ws_from->getRowDimension($row_from)->getRowHeight());
$lastColumn = $ws_from->getHighestColumn();
$rangeFrom = 'A'.$row_from.':'.$lastColumn.$row_from;
// copy text
$ws_to->fromArray($ws_from->rangeToArray($rangeFrom), null, 'A'.$row_to);
// copy style
++$lastColumn;
for ($c = 'A'; $c != $lastColumn; ++$c) {
$ws_to->duplicateStyle($ws_from->getStyle($c.$row_from), $c.$row_to);
}
}

然而,由于循环,它非常慢,但我需要它很快,因为将复制许多行。

我也试过这个样式复制:

$rangeTo = 'A'.$row_to.':'.$lastColumn.$row_to;
$ws_to->getStyle($rangeTo)->applyFromArray($ws_from->getStyle($rangeFrom));

但它不起作用 - 抛出错误“传递的样式数组无效”。

有没有更快的方法?

最佳答案

在搜索 PHPExcel 源代码后,我找到了一种更快的复制行的方法。它只能在一个工作簿中进行复制,但这正是我所需要的。发布它,也许有人也有或将有类似的问题。

function copyRowFull(&$ws_from, &$ws_to, $row_from, $row_to) {
$ws_to->getRowDimension($row_to)->setRowHeight($ws_from->getRowDimension($row_from)->getRowHeight());
$lastColumn = $ws_from->getHighestColumn();
++$lastColumn;
for ($c = 'A'; $c != $lastColumn; ++$c) {
$cell_from = $ws_from->getCell($c.$row_from);
$cell_to = $ws_to->getCell($c.$row_to);
$cell_to->setXfIndex($cell_from->getXfIndex()); // black magic here
$cell_to->setValue($cell_from->getValue());
}
}

关于PHPExcel快速重复行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29341713/

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