如何从 PhpOffice\PhpSpreadsheet 合并单元格中读取值

使用 PhpOffice\PhpSpreadsheet,返回是数组。但是合并单元格时,只返回合并单元格的单个值,其他值为null。

    public function excelUpload()
    {
        $reader = new \PhpOffice\PhpSpreadsheet\Reader\Xlsx();
        // $reader->setReadDataOnly(true); // 当setReadDataOnly设置为true是$sheet->getMergeCells()方法会返回空数组
        $spreadsheet = $reader->load('2022.xlsx');
        $sheet       = $spreadsheet->getActiveSheet();
        $this->fillEmptyMergeCells($sheet);
        $data = $sheet->toArray();
        return $data;
    }

    public function fillEmptyMergeCells($sheet)
    {
        $mergeCells = array_values($sheet->getMergeCells());
        for ($i = 0; $i < count($mergeCells); $i++) {
            // explode merge cells range,example N25:N27
            $CellIndex = explode(":", $mergeCells[$i]);
            // get main cell value, example N25
            $CellValue = $sheet->getCell($CellIndex[0])->getValue();
            // start index
            $StartIndex = (int) substr($CellIndex[0], 1, 2);
            // end index
            $EndIndex = (int) substr($CellIndex[1], 1, 2);
            // column name example "A" ,"B", max "Z"
            $ColumnName = substr($CellIndex[0], 0, 1);
            // loop to copy the value from main cell to merge cells
            for ($j = $StartIndex; $j <= $EndIndex; $j++) {
                $sheet->setCellValue($ColumnName . $j, $CellValue);
            }
        }
    }


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容