laravel csv,如何获取前零的csv文件

时间:2016-04-07 14:16:43

标签: php csv laravel-5.1

当我生成我的csv文件时,一些特殊的字符值和单元格值的前零点没有得到。请告知如何解决这个问题

    public function csv()
    {
        // $table = Festivals::all();
        $headers = [
            'Cache-Control' => 'must-revalidate, post-check=0, pre-check=0'
            , 'Content-type' => 'text/csv'
            , 'Content-Disposition' => 'attachment; filename=sss.csv'
            , 'Expires' => '0'
            , 'Pragma' => 'public'
        ];

              $list = Festivals::select('ref_no','artist_name','postal_address','payment','payment_fee','bank_details','bank_name','bank_address','account_name','account_number','sort_code','reg_vat','vat_reg_number'
,'foreign_artise','name_desg','email','mobile','name_address','vehicle_size','backline','additional_backline','name','date')->get()->toArray();


        # add headers for each column in the CSV download
        array_unshift($list, array_keys($list[0]));

        $callback = function () use ($list) {
            $FH = fopen('php://output', 'w');
            foreach ($list as $row) {
                fputcsv($FH, $row);
            }
            fclose($FH);
        };

        return Response::stream($callback, 200, $headers);
    }

EDIT enter image description here

1 个答案:

答案 0 :(得分:1)

塔鲁,

我现在还不确定您的数据是什么样的:fputcsv($FH, $row);

但是,我会做一些假设,我们可以从那里开始。

首先,$row数组中的零点可能已丢失。但就目前而言,请在fputcsv($FH, $row);上面添加以下内容:

foreach ($row as $key => $val) {
    $row[$key] = '="'.str_replace('"', '\"', $val).'"';
}

看看它对你有多大帮助。如果它仍然无法正常工作,请向我显示当前输出的一行,并告诉我它有什么问题。

修改

我的意思是这样做:

$callback = function () use ($list) {
    $FH = fopen('php://output', 'w');
    foreach ($list as $row) {
        foreach ($row as $key => $val) {
            $row[$key] = '="'.str_replace('"', '\"', $val).'"';
        }
        fputcsv($FH, $row);
    }
    fclose($FH);
};