使用 PHP Excel 读取 XLS 文件时,如何检测单元格是否为粗体?

When reading an XLS file using PHP Excel, how can I detect if a cell is bold?

我有一个 Excel 2007 xlsx 文档,在单元格 L2 中有 "BC/B22--"。 它是粗体的,并且是红色的。 使用 PHPExcel (v1.8.0, 2014-03-02) 我想检测单元格是否为粗体,但我只能得到值 "BC/B22--",没有样式信息。

这是我的代码:

$inputFileType = PHPExcel_IOFactory::identify($sFilepath);
$objReader = PHPExcel_IOFactory::createReader($inputFileType);  
$objReader->setReadDataOnly(false);
$objPHPExcel = $objReader->load($sFilepath);
$sheet = $objPHPExcel->setActiveSheetIndex(0); 
$cell = $sheet->getCellByColumnAndRow(11,2);

$v = $cell->getValue();
var_dump($v);
// Echoes: string(8) "BC/B22--" 

$rte = $cell->getValue()->getRichTextElements();
// Error: "Call to a member function getRichTextElements() on a non-object"

echo ($cell->getValue() instanceof PHPExcel_RichText) ? 
    "instance" : "no instance";
// Echoes "no instance"

这完全取决于单元格是否包含简单文本内容并且将粗体设置为单元格样式,或者单元格内容是否为富文本对象。

如果$cell->getValue() returns是一个字符串,那么需要测试单元格的样式:

$isBold = $cell->getStyle()->getFont()->getBold();

否则,如果 $cell->getValue() returns 富文本对象,则您需要遍历该富文本对象以查看是否有任何部分加粗:

$isBold = false;
$elements = $cell->getValue()->getRichTextElements();
foreach ($elements as $element) {
    if ($element instanceof PHPExcel_RichText_Run) {
        $isBold |= $element->getFont()->getBold();
    }
}