14

在 Codeigniter 框架中生成报告的最简单方法是什么?是否有任何图书馆可用于执行此任务?除了绘制图表之外,还有哪些其他资源可以做到这一点。

4

3 回答 3

42

自己找到了一个不错的解决方案。如果您想生成 csv 格式的报告,使用 codeigniter 非常容易。你的模型函数

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()
    */
}    

现在在控制器中

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    */
}

不需要外部的一切都可以在 codeigntier 中使用。干杯! 如果你想写 xml 文件也很容易。
只需使用xml_from_result()dbutil 的方法并使用write_file('xml_file.xml,$new_report) 访问这些链接,它们会有所帮助。

数据库实用程序类

文件助手

于 2012-06-25T12:26:19.127 回答
0

完整解释:

模型:

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

控制器:

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);
}
}
于 2015-11-21T19:05:54.933 回答
0

我将它用于我的 .csv 报告。它能够更改 csv 文件中的数据库字段名称。这是代码。

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

显然您需要根据您的表替换数据库表字段。

于 2016-02-16T09:14:22.010 回答