I want to export data to excel in CI. But i have issue
Undefined index: wc_order_id
If I
print_r(array_values($data)); exit;
the value is correct, only I cannot export to Excel.
This my controller:
public function createExcel($awals, $akhirs, $status) {
    $fileName = 'Reservation.xlsx';  
    $data['data'] = $this->M_reservation->all_order($awals, $akhirs, $status) ;
    $spreadsheet = new Spreadsheet();
    $sheet = $spreadsheet->getActiveSheet();
    $total = 0;
    $sheet->setCellValue('A1', 'No');
    $sheet->setCellValue('B1', 'Booking ID');
    $sheet->setCellValue('C1', 'Order Date');
    $sheet->setCellValue('D1', 'Client Name');
    $sheet->setCellValue('E1', 'Client Email');
    $sheet->setCellValue('F1', 'Phone');
    $sheet->setCellValue('G1', 'Inclution');
    $sheet->setCellValue('H1', 'Room name');
    $sheet->setCellValue('I1', 'Bed Order');
    $sheet->setCellValue('J1', 'Status');
    $sheet->setCellValue('K1', 'Total Order');
    $rows = 2;
    $no = 1;
    $total=0;
    foreach ($data as $val){
        $sheet->setCellValue('A' . $rows, $no++);
        $sheet->setCellValue('B' . $rows, $val['wc_order_id']);
        $sheet->setCellValue('C' . $rows, $val['post_date']);
        $sheet->setCellValue('D' . $rows, $val['display_name']);
        $sheet->setCellValue('E' . $rows, $val['user_email']);
        $sheet->setCellValue('F' . $rows, $val['meta_value']);
        $sheet->setCellValue('G' . $rows, $val['display_name']);
        $sheet->setCellValue('H' . $rows, $val['post_title']);
        $sheet->setCellValue('I' . $rows, $val['room_num_search']);
        $sheet->setCellValue('J' . $rows, $val['status']);
        $sheet->setCellValue('K' . $rows, $val['total_order']);
        $total = $total+$val['total_order'];
        $rows++;
    } 
    $sheet->setCellValue('B'.$rows , "Total");
    $sheet->setCellValue('K'.$rows , $total);
    $writer = new Xlsx($spreadsheet);
    header('Content-Type: application/vnd.ms-excel');
    header('Content-Disposition: attachment;filename="Reservation.xlsx"');
    header('Cache-Control: max-age=0');
    ob_clean();
  $writer->save('php://output');            
}
Advertisement
Answer
You’re storing the value in $data['data'] which means the variable $data has a key named data that stores the resultant array. So, you can either 
loop through
$data['data']$data['data'] = $this->M_reservation->all_order($awals, $akhirs, $status) ; // no change // ... // ... foreach($data['data'] as $val){ // change here // your code here }or store resultant array in
$data$data = $this->M_reservation->all_order($awals, $akhirs, $status) ; // change here // ... // ... foreach($data as $val){ // no change // your code here }
See if it helps you.