0

I am using this library for creating excel files. https://phpspreadsheet.readthedocs.io/

Run cost column should sum all values at the end. The problem is when I add new row after downloading formula doesn't work on a new row.

Here is my code

$spreadsheet = new Spreadsheet();
        $Excel_writer = new Xlsx($spreadsheet);
        $spreadsheet->setActiveSheetIndex(0);
        $activeSheet = $spreadsheet->getActiveSheet();

        $activeSheet->setCellValue('A1', 'Date');
        $activeSheet->setCellValue('B1', 'Driver');
        $activeSheet->setCellValue('C1', 'Delivery Run');
        $activeSheet->setCellValue('D1', 'Run Cost');

        $spreadsheet->getActiveSheet()->setAutoFilter('A1:D1');
        $driver_invoice = DriverInvoice::find($driver_invoice);
        $i = 2;
        $first_i = 2;
        foreach ($driver_invoice->driver_delivery_run_incomes->groupBy('driver_id')  as $delivery_run_incomes) {
            $run_names = '';
            $delivery_run_arr = '';
            $run_name_array = [];

            foreach ($delivery_run_incomes as $income) {
                if (!in_array($income->deliveryRunName, $run_name_array)) {
                    $run_names .= $income->deliveryRunName . ',';
                    array_push($run_name_array, $income->deliveryRunName);
                }
            }

            $activeSheet->setCellValue('A' . $i, $delivery_run_incomes->first()->date);
            $activeSheet->setCellValue('B' . $i, $delivery_run_incomes->first()->drivers->name);
            $activeSheet->setCellValue('C' . $i, $run_names);
            $activeSheet->setCellValue('D' . $i,  $delivery_run_incomes->sum('income'));
            $i++;
        }
        $last_i = $i - 1;
        $sumrange = 'D' . $first_i . ':D' . $last_i;
        $activeSheet->setCellValue('C' . $i, 'Total:');
        $activeSheet->setCellValue('D' . $i, '=SUM(' . $sumrange . ')');


        $samplepath = storage_path('sampleExcel.xlsx');
        $Excel_writer->save($samplepath);
web pakistan
  • 444
  • 1
  • 4
  • 16

0 Answers0