1

I have my reports viewed in a page. I want to make function where the reports will be viewed/downloaded as an excel file when an export button is clicked. I've tried this: Reports in Codeigniter but I have no luck. Can someone help me on this? Thanks!

My Controller:

    public function export_reports(){
    $this->load->dbutil();
    $this->load->helper('file');
    $filter = $this->input->post('filter');
    $year_date = $this->input->post('year_val');
        $today = $this->input->post('today');
        $month_start = $this->input->post('month_start');
        $month_end = $this->input->post('month_end');
        $last_month_start = $this->input->post('last_month_start');
        $last_month_end = $this->input->post('last_month_end');
        $this_year_start = $this->input->post('this_year_start');

    if($filter == "this_month"){

        $report = $this->getdata_model->get_reports($filter, $year_date, $today, $month_start, $month_end, $last_month_start, $last_month_end, $this_year_start);
        $new_report = $this->dbutil->xml_from_result($report);
        write_file('billing_report_this_month.xml',$new_report);

    }else{

        $report = $this->getdata_model->default_report($month_start, $month_end);
        $new_report = $this->dbutil->xml_from_result($report);
        write_file('monthly_billing_report.xml',$new_report);
    }

}

My Model:

public function default_report($month_start, $month_end){
  return $this->db->select("b.*, CONCAT(c.first_name,' ',c.last_name) as fullname", FALSE)
                ->order_by('fullname')
                ->from('billing as b')
                ->where('billing_date >=', $month_start)
                ->where('billing_date <=', $month_end)
                ->join('clients as c', 'b.customer_uuid=c.uuid')
                ->get()
                ->result();

}

  public function get_reports($filter, $year_date, $today, $month_start, $month_end, $last_month_start, $last_month_end, $this_year_start){

        if($filter==""){
              return $this->db->select("b.*, CONCAT(c.first_name,' ',c.last_name) as fullname", FALSE)
                ->order_by('fullname')
                ->from('billing as b')
                ->where('billing_date >=', $month_start)
                ->where('billing_date <=', $month_end)
                ->join('clients as c', 'b.customer_uuid=c.uuid')
                ->get()
                ->result();         
        }elseif($filter == "this_month"){
              return $this->db->select("b.*, CONCAT(c.first_name,' ',c.last_name) as fullname", FALSE)
                ->order_by('fullname')
                ->from('billing as b')
                ->where('billing_date >=', $month_start)
                ->where('billing_date <=', $month_end)
                ->join('clients as c', 'b.customer_uuid=c.uuid')
                ->get()
                ->result();
        }elseif($filter == "last_month"){
              return $this->db->select("b.*, CONCAT(c.first_name,' ',c.last_name) as fullname", FALSE)
                ->order_by('fullname')
                ->from('billing as b')
                ->where('billing_date >=', $last_month_start)
                ->where('billing_date <=', $last_month_end)
                ->join('clients as c', 'b.customer_uuid=c.uuid')
                ->get()
                ->result();         
        }elseif($filter == "monthly" || $filter == "annual"){
              return $this->db->select("b.*, CONCAT(c.first_name,' ',c.last_name) as fullname", FALSE)
                ->order_by('fullname')
                ->from('billing as b')
                ->where('billing_year', $year_date)
                ->join('clients as c', 'b.customer_uuid=c.uuid')
                ->get()
                ->result();                 
        }elseif($filter == "ytd"){
              return $this->db->select("b.*, CONCAT(c.first_name,' ',c.last_name) as fullname", FALSE)
                ->order_by('fullname')
                ->from('billing as b')
                ->where('billing_date >=', $this_year_start)
                ->where('billing_date <=', $today)
                ->join('clients as c', 'b.customer_uuid=c.uuid')
                ->get()
                ->result();         
        }

}

Community
  • 1
  • 1
elimariaaa
  • 796
  • 4
  • 10
  • 30

1 Answers1

2

I've discovered the solution. I just followed the instructions from http://www.ahowto.net/php/easily-integrateload-phpexcel-into-codeigniter-framework and it works.

elimariaaa
  • 796
  • 4
  • 10
  • 30