PHPExcel: чтение файла.xlsx, сумма значений столбца 'x' для аналогичного значения столбца 'y'

Я застрял на этой проблеме, позвольте мне объяснить. У меня есть лист Excel, который имеет 3 столбца, например:

y       x       z
10      5       0
10      5       4.25
10      5       0
30      2       0
30      2       1.85
30      2       0

Как я могу добавить значения col.x для аналогичных значений col.y?

Желаемый результат:

y=10, x=15
y=30, x=6

Можно ли добиться этого с помощью PHPExcel (если нет, то какой подход лучше)?

Я пробовал это, но возвращающий ассоциативный массив:

$objPHPExcel = PHPExcel_IOFactory::load($file_name);
$array = $objPHPExcel->getActiveSheet();
$highestRow = $array->getHighestRow();

$data = $array->rangeToArray("A2:C$highestRow");

$ data возвращает ассоциативный массив, но это не то, что я хочу.

Любая помощь с благодарностью.

1 ответ

Решение

Вам нужно пройти массив данных и суммировать элементы вручную

$objPHPExcel = PHPExcel_IOFactory::load($file_name);
$array = $objPHPExcel->getActiveSheet();
$highestRow = $array->getHighestRow();

$data = $array->rangeToArray("A2:C$highestRow");

$sumData = [];
foreach ($data as $row){
    $key = $row[0];
    if(!isset($sumData[$key])){
        $sumData[$key] = [0, 0];
    }
    $sumData[$key][0] += $row[1];
    $sumData[$key][1] += $row[2];
}

print_r($sumData);

Результат:

Array
(
    [10] => Array
        (
            [0] => 15
            [1] => 4.25
        )

    [30] => Array
        (
            [0] => 6
            [1] => 1.85
        )

)
Другие вопросы по тегам