在PHPSReadSheet中使用对象而不是数组设置样式

在PHPSReadSheet中使用对象而不是数组设置样式,php,phpspreadsheet,Php,Phpspreadsheet,使用PHPSpreadsheet,我创建了一个样式对象,并设置了它所需的所有内容。例如: $dateformat = new PhpOffice\PhpSpreadsheet\Style\NumberFormat(); $dateformat->setFormatCode($row['format']); 但是我看不到任何方法可以将该对象传递给我的单元格,我能看到的唯一方法是setStyleArray($array) 然后我看了一下style对象,发现它有一个getStyleArray(

使用PHPSpreadsheet,我创建了一个样式对象,并设置了它所需的所有内容。例如:

$dateformat = new PhpOffice\PhpSpreadsheet\Style\NumberFormat();
$dateformat->setFormatCode($row['format']);
但是我看不到任何方法可以将该对象传递给我的单元格,我能看到的唯一方法是
setStyleArray($array)

然后我看了一下style对象,发现它有一个
getStyleArray($array)
方法。但它接受一个数组,并以另一个键返回:

/**
 * Build style array from subcomponents.
 *
 * @param array $array
 *
 * @return array
 */
public function getStyleArray($array)
{
    return ['quotePrefix' => $array];
} 

所以这也没什么用。所以我的问题很简单。有可能吗?还是我们必须使用阵列?如果是这样的话,如果我们不能有效地使用这些对象,它们又有什么意义呢?

看起来这是不可能的。最后我不得不创建数组。

你不应该自己创建
Style
对象。相反,请PhpSpreadsheet提供一个,然后修改该对象。比如:

使用PhpOffice\PhpSpreadsheet\Style\Alignment;
使用PhpOffice\PhpSpreadsheet\Style\Border;
//获取样式
$style=$spreadsheet->getActiveSheet()->getStyle('B2');
//根据需要进行更新
$style->getFont()->getColor()->setARGB(Color::Color\u RED);
$style->getAlignment()->setHorizontal(对齐::水平\右);

所有这些都记录在官方文档中:

“我创建了一个样式对象”-说明您的意思。如果它只是一个StdClass实例,则可以直接在方法调用中将其强制转换为数组。“如果是这样,如果我们不能有效地使用它们,这些对象有什么意义?”-它们是两种不同的东西,编写库的人决定在那里使用数组。这本身并不能说明他们的观点是什么,也不能说明他们的观点是什么,这只是一个个人的决定。这不是一个stdClass,它是一个PHPSpreadsheet样式的类。我实际上处理过较旧的版本,即,
PHPExcel
,其中我们喜欢
返回数组('alignment'=>array('horizontal'=>PHPExcel_-Style_-Alignment::horizontal_-CENTER,);
那么你的意思是通过传递一个对象来做同样的事情吗?我正在替换那个旧库。我看不出对不同的库进行注释会有什么帮助。