首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当使用PHP读取XLS文件时,如何检测单元格是否粗体?

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

Stack Overflow用户
提问于 2015-03-03 17:21:29
回答 1查看 2K关注 0票数 0

我在单元格L2中有一个带有“BC/B22-”的Excel2007xlsx文档。它是粗体的,红色的。使用PHPExcel (v1.8.0,2014-03-02),我想检测单元格是否粗体,但我只能得到“BC/b22-”值,而没有样式信息。

这是我的密码:

代码语言:javascript
运行
AI代码解释
复制
$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"
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-04 00:11:07

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

如果$cell->getValue()返回一个字符串,则需要测试单元格的样式:

代码语言:javascript
运行
AI代码解释
复制
$isBold = $cell->getStyle()->getFont()->getBold();

否则,如果$cell->getValue()返回一个Rich对象,那么您需要遍历该Rich对象,以查看它的任何部分是否为粗体:

代码语言:javascript
运行
AI代码解释
复制
$isBold = false;
$elements = $cell->getValue()->getRichTextElements();
foreach ($elements as $element) {
    if ($element instanceof PHPExcel_RichText_Run) {
        $isBold |= $element->getFont()->getBold();
    }
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28845117

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档