我在单元格L2中有一个带有“BC / B22--”的Excel 2007 xlsx文档。 它是粗体,红色。 使用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"
答案 0 :(得分:4)
这完全取决于单元格是否包含简单文本内容,粗体是否设置为单元格样式,或者单元格内容是否为富文本对象。
如果$cell->getValue()
返回一个字符串,那么您需要测试该单元格的样式:
$isBold = $cell->getStyle()->getFont()->getBold();
否则,如果$cell->getValue()
返回一个富文本对象,那么您需要遍历该Rich Text对象进行搜索以查看其中是否有任何部分以粗体显示:
$isBold = false;
$elements = $cell->getValue()->getRichTextElements();
foreach ($elements as $element) {
if ($element instanceof PHPExcel_RichText_Run) {
$isBold |= $element->getFont()->getBold();
}
}