使用数组构建CSV

Dyl*_*uth 6 php csv arrays codeigniter download

我需要运行一个返回多行并将其导出为CSV的查询.我必须按照一定的顺序放置细胞.

所以,让我说我的桌子是id,姓名,地址,妻子.我需要按照id,address,wife,name的顺序构建一个csv.我想我可以按照正确的顺序制作一个数组,然后用它制作一个csv但是经过一个小时的谷歌搜索我无法找到如何用数组制作一个csv.

有fputcsv但需要预先制作的csv.此外,我希望有一个codeigniter方式来做到这一点.

 public function export() {
    $this->load->helper('download');

    $data[1] = 'i like pie';
    $data[2] = 'i like cake';
    force_download('result.csv', $data);  
}
Run Code Online (Sandbox Code Playgroud)

我试过了,但错误说下载帮助文件期望字符串不是数组.

Web*_*net 16

这是我使用的一些代码......您可以在导出中调整所需的列...

注意:此CSV直接发送到php://output输出缓冲区.这意味着你没有在服务器上保存任何.csv文件,它可以处理更大的文件大小,构建一个巨大的数组,然后尝试循环它.

    header("Content-type: application/csv");
    header("Content-Disposition: attachment; filename=\"Jobs_".date('M.j.y', $from)."-".date('M.j.y', $to).".csv\"");
    header("Pragma: no-cache");
    header("Expires: 0");

    $handle = fopen('php://output', 'w');
    fputcsv($handle, array(
        'JobId',
        'Template',
        'Customer',
        'Status',
        'Error',
        'PDF',
        'Run Time',
        'Wait Time',
        'Server'
    ));

    foreach ($jobs as $jobData) {
        fputcsv($handle, array(
            $job->getId(),
            $job->getTemplate(),
            $jobData['customers_firstname'].' '.$jobData['customers_lastname'],
            $status,
            $error,
            $jobData['products_pdfupload'],
            $job->getRunTime(),
            $job->getWaitTime(),
            $jobData['server']
        ));
    }

    fclose($handle);
    exit;
Run Code Online (Sandbox Code Playgroud)

这应该可以让您对CSV导出的工作原理有一个很好的了解.我不使用CodeIgniter的文件下载助手,所以我无法帮助你.