PHPにて、CSVファイルの出力を行う処理を作成しているのですが、
以下のものをエクセルでうまく出力する方法をお伺いしたいです。
「0123456789」 → 0が省略されてしまう
「+abcdefg」 → 計算式と判断されエラーになる
「"お名前"」 → ”がうまく出てくれない
また、このファイルはダウンロードできるだけでなく、
アップロードするファイルと共有にしたいのでできるだけ元の値を保持したいです。
php
1//CSV出力 2$filename = "出力ファイル".".csv";; 3$csvheader = ["no","ID","名前","カテゴリー","備考"]; 4$cnt = 1; 5$f = fopen($filename, "w"); 6mb_convert_variables('SJIS', 'UTF-8', $csvheader); 7fputcsv($f, $csvheader); 8if ( $f ) { 9 for($i = 0; $i < count($list); $i++){ 10 $line = [$cnt,$list[$i]->id,$list[$i]->name,$list[$i]->cate,$list[$i]->info]; 11 mb_convert_variables('SJIS', 'UTF-8', $line); 12 fputcsv($f, $line); 13 $cnt++; 14 } 15} 16fclose($f);
・試したこと
値の出力の際に 「=""」を追加して文字列だと認識されるように追加しました。
$line = [$cnt,'="'.$list[$i]->id.'"','="'.$list[$i]->name.'"',・・・(以下略)];
この場合だと0が省略されないようになり、
+-などの記号で計算が行われることがなくなりましたが、
「”」が値の中に入っている場合「=""」が表示されてしまい値としては正しくないものになってしまいました。
また、アップロードする際は「=""」が入らないようにしたいと考えております。
理由としてはエクセルでcsvに値を追加する場合、
毎回「=""」を入力しなければならない状態を避けたいためになります。
出力と入力でcsvの値を崩さない方法や
参考になるドキュメントなどご存知でしたらお伺いしたいです。。。
拙い質問で大変申し訳ございません。
お手数をおかけしますが、どうぞよろしくお願い致します。
回答3件
あなたの回答
tips
プレビュー