首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在PhpSpreadsheet中从合并单元格读取值

如何在PhpSpreadsheet中从合并单元格读取值
EN

Stack Overflow用户
提问于 2021-08-30 07:02:05
回答 1查看 280关注 0票数 0
代码语言:javascript
复制
 $reader = new \PhpOffice\PhpSpreadsheet\Reader\Xlsx();
 $spreadsheet = $reader->load($_FILES['mapping_file']['tmp_name']);
 $sheetData = $spreadsheet->getActiveSheet()->toArray();

这是我用PhpSpreadsheet从php中读取excel数据的代码,返回的是数组。但是当单元格合并时,它只返回合并单元格的单个值,而另一个值为null。

EN

回答 1

Stack Overflow用户

发布于 2021-08-31 07:37:11

代码语言:javascript
复制
        // loop to fill empty value from merged cells //
        for($i=0; $i<count($DuplicatedSheetData);$i++){
            // explode merge cells range //
            $CellIndex = explode(":", $DuplicatedSheetData[$i]);

            // get main cell with value, ex N25:N27 , the value only stored in N25 //
            $CellValue = $spreadsheet->getActiveSheet()->getCell($CellIndex[0])->getValue();

            // starting index //
            $StartIndex = (int) substr($CellIndex[0],1,2);

            // ending index // 
            $EndIndex = (int) substr($CellIndex[1],1,2);
            
            // column name example "A" ,"B" //
            $ColumnName = substr($CellIndex[0],0,1);      
            
            // loop to copy the value from main cell, to other cell //
            for($j = $StartIndex;$j <= $EndIndex; $j++){
                $spreadsheet->getActiveSheet()->setCellValue($ColumnName.$j , $CellValue);
            }

        }

        // map to array and remove empty value //
        $sheetData = $spreadsheet->getActiveSheet()->toArray();
        $sheetData = array_values(array_map('array_filter', $sheetData));

基本上,我只是将主值复制到范围内没有值的其他单元格。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68980084

复制
相关文章

相似问题

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