php - 使用数组构建 CSV

标签 php arrays codeigniter csv download

我需要运行一个将返回多行并将其导出到 CSV 的查询。不过,我必须按一定顺序放置单元格。

假设我的表格是 id、name、address、wife。我需要按照id、地址、妻子、姓名的顺序构建一个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);  
}

我试过了,但错误提示下载帮助程序文件需要的是字符串而不是数组。

最佳答案

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

注意:此 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;

这应该可以让您清楚地了解 CSV 导出的工作原理。我不使用 CodeIgniter 的文件下载助手,所以我无法在这方面帮助您。

关于php - 使用数组构建 CSV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10887505/

相关文章:

php - 如何执行这种类型的 MySQL 查询 - 基于 3 个表选择数据?

javascript - PHP 添加评论框到评级系统

php mysql 数组中的上一个下一个按钮

ios - 是否有多个按钮具有相同的功能?

具有异步函数的 JavaScript 数组

codeigniter - 如何在代码点火器中编写连接选择语句

php - mySQL自动增量问题: key 1的条目“4294967295”重复

c++ - 在 C++ 中存储对数组的引用

php - Tank Auth 登录在本地成功,在服务器上失败

php - CodeIgniter $this->input->get() 不工作