【问题标题】:Export Data As CSV In CodeIgniter在 CodeIgniter 中将数据导出为 CSV
【发布时间】:2016-08-03 00:23:11
【问题描述】:

我需要将 MySQL 查询的结果导出到 codeigniter 中的 csv 文件中。

这是模型:

public function export_csv()
{

       $this->load->dbutil();
    $this->load->helper('file');
    $this->load->helper('download');
    $delimiter = ",";
    $newline = "\r\n";
    $file_name = 'BVN_REPORTS'.date("Y-m-d h-i-s").'.csv';
    $query = 'SELECT  account_name as "Account Name",
    api_account_name as "Verified Name", 
    account_num "Account Number", 
    bvn "Bank Verification Number (BVN)", bank_name as "BANK NAME" 
    from ew_employees where bvn is not null
    ORDER BY bank_name ';
   $result = $this->db->query($query);
   $data = $this->dbutil->csv_from_result($result, $delimiter, $newline);
   if(force_download($filename, $data)){
   echo 'Done';
   }
   else {echo 'Not Done';}
    }

这是控制器:

  public function get_csv()
{
     $this->load->model('employees_model');
     $this->employees_model->export_csv();
}

结果总是“未完成”...如何强制下载查询结果的 csv 格式。谢谢

【问题讨论】:

  • 您确定文件已加载??
  • 该文件应该是动态创建并填充查询结果的
  • 手动检查文件是否创建
  • 该代码应该创建文件...它还不存在
  • 检查文件权限

标签: codeigniter


【解决方案1】:

根据问题标题让我回答问题。一般访问这里时它可能会帮助其他人。 将数据导出到 csv 时我通常会做什么。

function data_to_csv($data, $headers = TRUE, $filename= "")
{
    if ( ! is_array($data))
    {
        show_error('invalid Data provided');
    }

    $array = array();

    if ($headers)
    {
        $array[] = array_keys($data[0]);
    }
    foreach ($data as $row)
    {
        $line = array();
        foreach ($row as $item)
        {
            $line[] = $item;
        }
        $array[] = $line;
    }
        header("Content-type: application/csv");
        header("Content-Disposition: attachment; filename=\"$filename".".csv\"");
        header("Pragma: no-cache");
        header("Expires: 0");

        $handle = fopen('php://output', 'w');

        foreach ($array as $array) {
            fputcsv($handle, $array);
        }
            fclose($handle);
        exit;
}

【讨论】:

  • 如何将多个表格数据导出到一个 csv 文件中?
  • 这取决于您的要求,在不知道确切要求的情况下不能说什么
  • 基本上我想在另一个下面的 csv 文件中导出两个 html 表的数据
【解决方案2】:

控制器

    $result = $this->registration_model->exportToCsv();
    header("Content-type: application/csv");
    header("Content-Disposition: attachment; filename=\"application".".csv\"");
    header("Pragma: no-cache");
    header("Expires: 0");
    $handle = fopen('php://output', 'w');
   fputcsv($handle, array('Sr No.', 'Apply for', 'Name', 'mobile', 'email_id', 'work_experinece', 'pan', 'refrence', 'pro_img1', 'pro_img2', 'created_at'));
                    $i = 1;
                    foreach ($result as $data) {
                        fputcsv($handle, array($i, $data["apply_for"], $data["full_name"], $data["mobile"], $data["email_id"], $data["work_experinece"], $data["pan"], $data["refrence"], $data["pro_img1"], $data["pro_img2"], $data["created_at"]));
                        $i++;
                    }
                        fclose($handle);
                    exit;

型号

$this->db->select("apply_for,full_name,mobile,address,email_id,work_experinece,pan,refrence,pro_img1,pro_img2,created_at");
$this->db->order_by("app_id", "DESC");
$this->db->from("tablename"); 
$query = $this->db->get();
return $query->result_array();

【讨论】:

    【解决方案3】:

    我在Abdul Manan 的回答中添加了一行来处理 UTF-8 字符:

           foreach ($array as $array) {
            fputs($handle, $bom =( chr(0xEF) . chr(0xBB) . chr(0xBF) ));
            fputcsv($handle, $array);
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-08-09
      • 1970-01-01
      • 1970-01-01
      • 2019-05-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多