2012-06-25 36 views
14

¿Cuál es la forma más simplista de generar informes en el marco de Codeigniter? ¿Hay alguna biblioteca disponible para hacer esta tarea? Excepto graficar cuales son los otros recursos para hacer esto.Informes en Codeigniter

+0

En mi experiencia no encontré nada. ¿Puedo saber qué tipo de informe está buscando exactamente? – LoganPHP

+0

quiero generar el informe de una consulta. ¿Debería haber algún formato csv, pdf u otro –

Respuesta

41

Encontré una buena solución yo mismo. Si desea generar informes en formato csv, es muy fácil con codeigniter. Su función modelo

function index(){ 
return $query = $this->db->get('my_table'); 
    /* 
    Here you should note i am returning 
    the query object instead of 
    $query->result() or $query->result_array() 
    */ 
}  

Ahora en el controlador

function get_report(){ 
    $this->load->model('my_model'); 
    $this->load->dbutil(); 
    $this->load->helper('file'); 
    /* get the object */ 
    $report = $this->my_model->index(); 
    /* pass it to db utility function */ 
    $new_report = $this->dbutil->csv_from_result($report); 
    /* Now use it to write file. write_file helper function will do it */ 
    write_file('csv_file.csv',$new_report); 
    /* Done */ 
} 

No se requieren externos todo está disponible en codeigntier. ¡Aclamaciones! Si desea escribir un archivo xml, también es fácil.
Simplemente use xml_from_result() método de dbutil y use write_file('xml_file.xml,$new_report) Visite estos enlaces le ayudarán.

Database Utility Class

Y

File Helper

+0

esto está funcionando para excel file señor? – wewe

+0

@wewe nunca he probado esto para el archivo de Excel pero puede probar y mencionar –

+0

cómo anular el nombre de campo de la base de datos? solo el espectáculo de grabación? en CSV – wewe

0

explicación completa:

Modelo:

class Csv_m extends MY_Model { 
function getCSV() { 
    $sql = "SELECT * FROM tablename"; 
    return $this->db->query($sql); 
} 
} 

controlador:

class Generate extends CI_Controller { 
var $file_path; 
public function __construct() { 
    parent::__construct(); 
    $this->file_path = realpath(APPPATH . '../assets/csv'); 
} 
function index() { 
    $this->load->model('csv_m'); 
    $this->load->dbutil(); 
    $this->load->helper('file'); 
    //get the object 
    $report = $this->csv_m->getCSV(); 

    $delimiter = ","; 
    $newline = "\r\n"; 
    $new_report = $this->dbutil->csv_from_result($report, $delimiter, $newline); 
    // write file 
    write_file($this->file_path . '/csv_file.csv', $new_report); 
    //force download from server 
    $this->load->helper('download'); 
    $data = file_get_contents($this->file_path . '/csv_file.csv'); 
    $name = 'name-'.date('d-m-Y').'.csv'; 
    force_download($name, $data); 
} 
} 
0

Lo usé para mis informes .csv. tiene la capacidad de cambiar el nombre de los campos de la base de datos en el archivo csv. aquí está el código.

public function export_csv() { 
    $file_name = 'File_name_'.date("Y-m-d h-i-s").'.csv'; 
    $query = $this->db->query('SELECT 
     id as "Id", // id is table id and Id is the csv header field. 
     franchiseopt as "Nearest Location", 
     hear_about_us as "How did you hear about us?", 
     specify as "Specify", 
     email as "Email", 
     noguests as "Number of Guests", 
     eventdate as "Date of Event", 
     name as "Your Name", 
     phone as "Phone Number", 
     locationevent as "Location of Event", 
     message as "More Details" 
     FROM TABLE_NAME ORDER BY id DESC'); 

    $this->load->dbutil(); 
    $data = $this->dbutil->csv_from_result($query); 
    $this->load->helper('download'); 
    force_download($file_name, $data); 
    exit(); 
} 

Obviamente, debe reemplazar los campos de la tabla de la base de datos de acuerdo con su tabla.