提问人:Rodrigo Temporim 提问时间:10/4/2023 更新时间:10/4/2023 访问量:28
我在PhpSpreadsheet中检查行之间的相等性时遇到困难
I'm having difficulties checking equality between rows in PhpSpreadsheet
问:
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;
}
}
请注意,突出显示的行在我的 CSV 中出现了三次。我正在使用 PhpSpreadsheet 库,但只有 2 行被识别为“相等”。我什至无法回应第三行,这发生在几行中,而其他行则“正常工作”。
我正在我的数据库中搜索 A 列相等的行,显然,它在某些情况下有效,但在其他情况下,它不起作用。我尝试过以各种方式操作字符串,小心使用小写字母、特殊字符和隐藏空格......”
答: 暂无答案
评论