douduan2272 2012-06-04 19:58
浏览 43
已采纳

使用数组构建CSV

I need to run a query that will return multiple rows and export it to a CSV. I have to put the cells in a certain order though.

So lets say my table is laid out id, name, address, wife. I need to build a csv in the order of id, address, wife, name. I figured I could just make an array in the correct order and then make a csv with that but after an hour of googling i cant find out how to make a csv with an array.

There is fputcsv but that requires a pre-made csv. Also, i was hoping there was a codeigniter way of doing it.

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

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

I tried that but the error said the download helper file was expecting a string not an array.

  • 写回答

3条回答 默认 最新

  • dsrw29618 2012-06-04 20:10
    关注

    Here's some code I use... you could adjust the columns you need in the export...

    Note: This CSV is directly sent to php://output which writes directly to the output buffer. This means you're not saving any .csv files on the server and it can handle a much larger file size that building a giant array and then trying to loop through it.

        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;
    

    This should give you a good mental picture of how a CSV export works. I don't use CodeIgniter's file download helper, so I can't help you on that front.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 为什么apriori的运行时间会比fp growth的运行时间短呢
  • ¥15 帮我解决一下膳食平衡的线性规划模型的数据实例
  • ¥40 万年历缺少农历,需要和阳历同时显示
  • ¥250 雷电模拟器内存穿透、寻基址和特征码的教学
  • ¥200 比特币ord程序wallet_constructor.rs文件支持一次性铸造1000个代币,并将它们分配到40个UTXO上(每个UTXO上分配25个代币),并设置找零地址
  • ¥15 关于Java的学习问题
  • ¥15 如何使用chatgpt完成文本分类任务?
  • ¥15 已知速度v关于位置s的等式,怎么转化为已知位置求速度v的等式
  • ¥15 我有个餐饮系统,用wampserver把环境配置好了,但是后端的网页却进去,是为什么,能不能帮远程一下?
  • ¥15 R运行没有名称为"species"的插槽对于此对象类"SDMmodelCV"