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);