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());
}
}
我有以下单元格数据:
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());
}
}