阅读合并单元格的PhPExcel

5

我试图在phpexcel中读取一个合并的单元格,我的问题是该单元格在A:B:C:D:E:F上合并(不能违背他们的要求)。

$i= 0;
foreach ($worksheet->getRowIterator() as $row) {
    if ($i > 10) break ;
    $i ++;
    $cellIterator = $row->getCellIterator();
    foreach ($cellIterator as $cell) {
        if($cell->getColumn()== 'A:B:C:D:E:F'){
            $specification=$cell->getCalculatedValue();
            var_dump($specification);die();
// some other code

总是输出 null。

我尝试过使用 $cell->getColumn()== 'A',因为该单元格从 A 开始,但仍然输出 null。

希望能得到任何帮助。

1个回答

7
我不太明白你在这里想要做什么,因为 getColumn() 只会返回单个列地址,如 AB,而永远不会返回像 'A:B:C:D:E:F' 这样的内容。
使用迭代现有单元格可能是明智的。
$cellIterator->setIterateOnlyExistingCells(true);

但有一些函数可能会帮助您处理合并单元格:

$cell->isInMergeRange()

将返回一个布尔值true/false,表示单元格是否属于合并范围

$cell->isMergeRangeValueCell()

可以用来测试合并单元格范围内的单元格是否是该范围的左上角(主要)单元格,并返回一个布尔值true/false以指示它是否持有该范围的实际数据值/类型等......请注意,如果单元格不属于任何合并范围,则它将返回false。


谢谢,但该文件是一个xls模板,需要下载、填写并上传到我的网站,因此我的主要问题是如何读取合并单元格?@Mark Baker先生 - Seyes Radhouene
2
你需要确定合并范围的左上角单元格……这是唯一实际存在的单元格,它保存着数据值:如果你有一个合并范围A1:B2,那么只有单元格A1实际存在,A2、B1和B2根本不存在。虽然PHPExcel允许你访问单元格A2、B1和B2(如果你坚持这样做),但它们没有任何值。 - Mark Baker
谢谢你,我现在明白我需要做什么了,我很感激。 - Seyes Radhouene
@Mark Baker:您能告诉我哪个版本的PhpExcel有这个函数吗?我的版本是1.8,但当我调用该函数时,它找不到。 - Hoàng Long
1
这些方法现在已经是PHPExcel的一部分有两年了。 - Mark Baker

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接