2017-11-06 5 views
0

私はCSVをWebアプリケーションからエクスポートしていますが、私は1/1または1/6のような列の形式を持っています...そしてExcelはそれを変換します1.1.2017として1.6.2017。Excelは1/1の日付(DD.MM.YYYY)を変換します

これは、輸出のための私の関数である。

public function exportCSVPrint($id) 
    { 
     $tablePrint = DB::connection('mysql2')->table('mc_schaltdaten_print')->select('s_magazin', 'datum', 's_ausgabe', 's_ausrichtung', 's_jahrgang', 's_format', 's_seite', 's_seiten', 'brutto', 'pzn')->where('spotid', $id)->get(); 
     $csv  = \League\Csv\Writer::createFromFileObject(new \SplTempFileObject()); 

     $header = [Lang::get('language.magazine'), Lang::get('language.date'), Lang::get('language.ausgabeVersion'), Lang::get('language.seite'), Lang::get('language.seiten'), 'Format', Lang::get('language.ausrichtung'), Lang::get('language.anzeigenPreis')]; 
     $csv->setDelimiter(';'); 
     $csv->insertOne($header); 

     foreach ($tablePrint as $t) { 
      $rows = [ 
       [$t->s_magazin, $t->datum, $t->s_ausgabe, $t->s_seite, $t->s_seiten, $t->s_format, $t->s_ausrichtung, $t->brutto], 
      ]; 

      $csv->insertAll($rows); 
     } 
     $csv->output($id . '.csv'); 
    } 

私は、1月1日オリジナルではない日付形式としてそれを取得できますか?

+2

おめでとうございます。あなたはちょうどExcelがうんざりしていることを発見しました。そして、CSV形式のデータを扱うときは特に難しいです。悲しいことに、あなたが記述している問題は、実際にはExcelのCSV処理であまり深刻なバグの1つです。他にも多く*悪い*があることに注意してください。 – Simba

+0

はい、MS Excelは、CSVファイルをインポートするときに値が意味することを「第2の推測」しようとしますが、期待どおりに動作するとは限りません。 CSVは、MS Excelを使用してファイルを表示する予定のときに使用するのに最適なフォーマットではありません。 –

答えて

1

迷惑ですね?

Excel a/bのような形式を入力すると、日付を入力したことが適切に設定されていることが前提です。

文字列の先頭に一重引用符の文字「'」を付けると、元のテキストを保持できます。

+0

本当に厄介な! ; D私の場合 '$ t-> s_format'が配列メンバーであるので、どのようにして配列に引用符を挿入できますか? – harunB10

+0

'' '" $ t-> s_format' –

関連する問題