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

时间:2018-03-19 20:34:39

标签: php phpspreadsheet

我有以下细胞数据:

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();

但问题是,只有当整个单元格文本都是粗体时才有效,而在我的情况下,只有一部分是粗体。

任何人都知道如何解决这个问题?谢谢!

1 个答案:

答案 0 :(得分:2)

具有多个格式的单元格是\ PhpOffice \ PhpSpreadsheet \ RichText \ RichText的实例  https://phpspreadsheet.readthedocs.io/en/develop/topics/recipes/#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());
       }
}