@entermix

Как правильно оформить итоговую строку в PHPExcel?

Допустим нам нужна такая табличка:
7867144.jpg

Дополнительно нужны фильтры в шапке, делаю все так:

$objPHPExcel = new PHPExcel();

        $objPHPExcel->setActiveSheetIndex(0);

        $active_sheet = $objPHPExcel->getActiveSheet();

        $active_sheet->setCellValue('A3', '№');
        $active_sheet->setCellValue('B3', 'Товар');
        $active_sheet->setCellValue('C3', 'Цена');

        $active_sheet->setAutoFilter('A3:C3');

        $active_sheet->setCellValue('A4', '1');
        $active_sheet->setCellValue('B4', 'Товар 1');
        $active_sheet->setCellValue('C4', '200');

        $active_sheet->setCellValue('A5', '2');
        $active_sheet->setCellValue('B5', 'Товар 2');
        $active_sheet->setCellValue('C5', '500');

        $active_sheet->setCellValue('A6', '3');
        $active_sheet->setCellValue('B6', 'Товар 3');
        $active_sheet->setCellValue('C6', '120');

        $active_sheet->setCellValue('A7', '4');
        $active_sheet->setCellValue('B7', 'Товар 4');
        $active_sheet->setCellValue('C7', '245');

        $active_sheet->setCellValue('A8', '5');
        $active_sheet->setCellValue('B8', 'Товар 5');
        $active_sheet->setCellValue('C8', '130');

        $active_sheet->setCellValue('A9', 'Итог');
        $active_sheet->setCellValue('C9', '=SUM(C4:C8)');

        $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');

        header("Content-Type:application/vnd.ms-excel");
        header("Content-Disposition:attachment;filename=simple.xls");

        $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
        $objWriter->save('php://output');

        exit();


Получаем таблицу:
7870219.jpg

Все бы хорошо, но при выборе фильтра:
f1c73d673f80453dbded1f8563333d90.png

Итоговая строка тоже попадает под фильтрацию, а если применить фильтр по цене например, сумма в итоговой строке не меняется..

Как правильно реализовать табличку с фильтрами и строкой итогов?
  • Вопрос задан
  • 863 просмотра
Решения вопроса 1
@entermix Автор вопроса
Нужно использовать функцию ПРОМЕЖУТОЧНЫЕ.ИТОГИ (SUBTOTAL):

$active_sheet->setCellValue('C9', '=SUBTOTAL(9,C4:C8)');


ru.stackoverflow.com/questions/455156/%D0%9A%D0%B0...
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы