我在PhpSpreadsheet中检查行之间的相等性时遇到困难

I'm having difficulties checking equality between rows in PhpSpreadsheet

提问人:Rodrigo Temporim 提问时间:10/4/2023 更新时间:10/4/2023 访问量:28

问:

 for ($row = 1; $row <= $lastRow; $row++) {                    

                        // SOMA do Débito e Crédito para Criar a Conciliação...
                        for ($row = 1; $row <= $lastRow; $row++) {
                            $valueA = trim($worksheet->getCell('A' . $row)->getValue());
                            $valueB = $worksheet->getCell('B' . $row)->getValue();
                            $valueD = $worksheet->getCell('E' . $row)->getValue();
                            $valueE = $worksheet->getCell('F' . $row)->getValue();
                    
                            // Remover todos os caracteres, exceto letras e números, de $valueA
                            $valueA = strtolower($valueA);
                            $valueA = preg_replace('/[^a-zA-Z0-9]/', '', $valueA);

                            if (in_array(trim($valueA), $uniqueValues)) {
                                // Valor em A repetido, mesclar células em A
                                $worksheet->mergeCells("A$row:A$lastRowIndex");

                                if (isset($valueMap[$valueA])) {
                                    $currentValueB = $worksheet->getCell('B' . $valueMap[$valueA])->getValue();
                                    $currentValueD = $worksheet->getCell('E' . $valueMap[$valueA])->getValue();
                                    $currentValueE = $worksheet->getCell('F' . $valueMap[$valueA])->getValue();

                            
                                    $worksheet->setCellValue('B' . $valueMap[$valueA], $currentValueB . ' ' . $valueB);
                                    $worksheet->setCellValue('E' . $valueMap[$valueA], $currentValueD . ' ' . $valueD);
                                    $worksheet->setCellValue('F' . $valueMap[$valueA], $currentValueE . ' ' . $valueE);
                                    $worksheet->removeRow($row);
                                    
                                }

                            } else {
                                $uniqueValues[] = $valueA;                                
                                $valueMap[$valueA] = $row; // Atualiza o mapa para a última linha de cada valor em A
                                
                            }
                            
                            $lastRowIndex = $row;
                        }
                    }

enter image description here请注意,突出显示的行在我的 CSV 中出现了三次。我正在使用 PhpSpreadsheet 库,但只有 2 行被识别为“相等”。我什至无法回应第三行,这发生在几行中,而其他行则“正常工作”。

我正在我的数据库中搜索 A 列相等的行,显然,它在某些情况下有效,但在其他情况下,它不起作用。我尝试过以各种方式操作字符串,小心使用小写字母、特殊字符和隐藏空格......”

php 字符串 phpspreadsheet

评论

1赞 ADyson 10/4/2023
请将所有相关行的原始 csv 数据粘贴到问题中。

答: 暂无答案