Кажется, что объект ячейки PHPExcel не обрабатывает атрибуты элемента формулы, поэтому такие вещи, как "t = array", будут потеряны к тому времени, когда вы перейдете к createWriter.
Чтобы решить эту проблему, мы 'Мы внесли изменения в ячейку и классы чтения и записи Excel2007.
В cell.php:
private $_formulaAttributes;
// getter and setter functions
В reader / excel2007.php:
строка 769 - после$ this-> castToFormula ...
if(isset($c->f['t'])){
$attributes = array();
$attributes = $c->f;
$docSheet->getCell($r)->setFormulaAttributes($attributes);
}
In Writer / excel2007 / worksheet.php:
строка 1042 - после регистра 'f':
$attributes = $pCell->getFormulaAttributes();
if($attributes['t'] == 'array') {
$objWriter->startElement('f');
$objWriter->writeAttribute('t', 'array');
$objWriter->writeAttribute('ref', $pCell->getCoordinate());
$objWriter->writeAttribute('aca', '1');
$objWriter->writeAttribute('ca', '1');
$objWriter->text(substr($pCell->getValue(), 1));
$objWriter->endElement();
} else {
$objWriter->writeElement('f', substr($pCell->getValue(), 1));
}
надеюсь, это кому-нибудь поможет ...