php excel复制sheet宏,使用PHPExcel复制样式的解决方法

一个workround for you可能是使用样式xf索引:

$xfIndex = $activeSheet->getCell('A1')->getXfIndex();

然后为该范围内所有单元格的xfIndex设置该值

for ($col = 'D'; $col != 'E'; ++$col) {

for ($row = 1; $row <= 100; ++$row) {

$activeSheet->getCell($col . $row)->setXfIndex($xfIndex);

}

}

编辑

或者,将修复应用于Classes / PHPExcel / Worksheet.php中的duplicateStyle()方法

目前阅读第1479至1486行:

if ($this->_parent->cellXfExists($pCellStyle)) {

// there is already this cell Xf in our collection

$xfIndex = $pCellStyle->getIndex();

} else {

// we don't have such a cell Xf, need to add

$workbook->addCellXf($pCellStyle);

$xfIndex = $pCellStyle->getIndex();

}

改成:

if ($existingStyle = $this->_parent->getCellXfByHashCode($pCellStyle->getHashCode())) {

// there is already such cell Xf in our collection

$xfIndex = $existingStyle->getIndex();

} else {

// we don't have such a cell Xf, need to add

$workbook->addCellXf($pCellStyle);

$xfIndex = $pCellStyle->getIndex();

}

类似地在Classes / PHPExcel / Style.php中的applyFromArray()方法中

第425至432行目前已阅读:

if ($workbook->cellXfExists($newStyle)) {

// there is already such cell Xf in our collection

$newXfIndexes[$oldXfIndex] = $existingStyle->getIndex();

} else {

// we don't have such a cell Xf, need to add

$workbook->addCellXf($newStyle);

$newXfIndexes[$oldXfIndex] = $newStyle->getIndex();

}

改成:

if ($existingStyle = $workbook->getCellXfByHashCode($newStyle->getHashCode())) {

// there is already such cell Xf in our collection

$newXfIndexes[$oldXfIndex] = $existingStyle->getIndex();

} else {

// we don't have such a cell Xf, need to add

$workbook->addCellXf($newStyle);

$newXfIndexes[$oldXfIndex] = $newStyle->getIndex();

}

编辑#2

Fix现已被推送到github上的develop分支.根据使用的样式数量,它确实会有轻微的性能影响……我会尝试明天晚上获得更快的版本

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值