PHPSpreadsheet 从单元格中的文本读取样式

PHPSpreadsheet read styles from text in a cell

我有以下单元格数据:

bla bla bla abcd efgh ijkl

注意,abcd是粗体,efgh是斜体,ijkl同时是粗体和斜体。

我想读取整个单元格的数据,并将其保存在数据库中,这样我就可以按原样(即使用那些样式)将其呈现给最终用户。 我搜索了文档,我只能修改这段代码:

$path = $this->get('kernel')->getRootDir() . '/../intrebari.xlsx';
$spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load($path);
$bold = $spreadsheet->getActiveSheet()->getStyle('A3')->getFont()->getBold();

但它的问题是,只有当整个单元格文本都是粗体时,这才有效,而在我的例子中,只有一部分是粗体。

有人知道如何解决这个问题吗?谢谢!

具有多种格式的单元格使用 \PhpOffice\PhpSpreadsheet\RichText\RichText(请参阅文档中的 Add rich text to a cell)。

要获取所需的信息,您可以使用如下方式:

$cellValue = $spreadsheet->getActiveSheet()->getCell('A3')->getValue();
        
if ($cellValue instanceof \PhpOffice\PhpSpreadsheet\RichText\RichText) {
       foreach ($cellValue->getRichTextElements() as $richTextElement) {
                var_dump($richTextElement->getText());
                var_dump($richTextElement->getFont()->getBold());
       }
}