Skip to content
Advertisement

Undefined index: wc_order_id

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

  1. 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
    }
    
  2. 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.

User contributions licensed under: CC BY-SA
8 People found this is helpful
Advertisement