gpt4 book ai didi

PHPExcel插入数组公式

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

我想插入这个数组公式:

{=SUM(IF(FREQUENCY(IF(T9:T977=1,MATCH(U9:U977,U9:U977,0)),ROW(U9:U977)-ROW(U9)+1),1))}

但是当我使用时:

$sheet->getCell("C1")->setValue("{=SUM(IF(FREQUENCY(IF(T9:T977=1,MATCH(U9:U977,U9:U977,0)),ROW(U9:U977)-ROW(U9)+1),1))}");

它不起作用,我已经检查了文档,但仍然没有找到任何东西。

最佳答案

我找不到任何答案,所以我通过 PHPExcel 为自己制定了一个解决方案:

在/PHPExcel/Cell.php 的第 251 行的 switch($pDataType) 添加:

case PHPExcel_Cell_DataType::TYPE_FORMULA_ARRAY:
$this->_value = (string)$pValue;
break;

在/PHPExcel/Cell/DataType.php 添加这个常量:

const TYPE_FORMULA_ARRAY = 't';

最后在 /PHPExcel/Writer/Excel2007/Worksheet.php我在第 1095 行开始的开关中添加了这个:

case 't':           // Array Formulae
$objWriter->startElement('f');
$objWriter->writeAttribute('t', 'array');
$objWriter->writeAttribute('ref', $pCellAddress);
$objWriter->writeAttribute('aca', '1');
$objWriter->writeAttribute('ca', '1');
$objWriter->text($cellValue);
$objWriter->endElement();
if ($this->getParentWriter()->getOffice2003Compatibility() === false) {
if ($this->getParentWriter()->getPreCalculateFormulas()) {
$calculatedValue = $pCell->getCalculatedValue();
if (!is_array($calculatedValue) && substr($calculatedValue, 0, 1) != '#') {
$objWriter->writeElement('v', PHPExcel_Shared_String::FormatNumber($calculatedValue));
} else {
$objWriter->writeElement('v', '0');
}
} else {
$objWriter->writeElement('v', '0');
}
}
break;

然后我使用了这样的函数:

$sheet->getCell("C1")->setValueExplicit("=SUM(IF(FREQUENCY(IF(T9:T977=1,MATCH(U9:U977,U9:U977,0)),ROW(U9:U977)-ROW(U9)+1),1))", PHPExcel_Cell_DataType::TYPE_FORMULA_ARRAY);

当我创建 excel 文件时,一切正常!

关于PHPExcel插入数组公式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29174947/

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