PHPExcel插入数组公式
我要插入此数组公式:PHPExcel插入数组公式,php,phpexcel,array-formulas,Php,Phpexcel,Array Formulas,我要插入此数组公式: {=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))}"); 它不起作用,我检查了文档,但
{=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中在开关($pDataType)
的第251行添加以下内容:
case PHPExcel_Cell_DataType::TYPE_FORMULA_ARRAY:
$this->_value = (string)$pValue;
break;
在/PHPExcel/Cell/DataType.php中添加此常量:
const TYPE_FORMULA_ARRAY = 't';
最后,在/PHPExcel/Writer/Excel2007/sheet.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的继任者PHPSpreadsheet时仍然会出现这个问题/答案,因此我想补充一点,后者支持内置数组公式。只需像往常一样分配公式,并将type属性设置为array:
$attrs = $sheet->getCell("C1")->getFormulaAttributes();
$attrs['t'] = 'array';
$sheet->getCell("C1")->setFormulaAttributes($attrs);
公式在excel中是否可以正常工作?下面的PHPExcelMade解决方案不支持数组公式。您在这里做得很好,但为什么不完成它?目前您只能为1个单元格设置数组函数?非常感谢。我花了一天半的时间寻找这个。我在PHPSReadSheet文档中没有看到任何提及。谢谢,谢谢,谢谢!!!