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ファイルを書きたい場合も簡単です。dbutil のメソッドを使用し
て 、これらのリンクにアクセスしてください。 xml_from_result()write_file('xml_file.xml,$new_report)

データベース ユーティリティ クラス

ファイルヘルパー

于 2012-06-25T12:26:19.127 に答える
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 に答える
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 に答える