0

私はphpプロジェクトを持っています。ここでは、データベースからcsvにデータをエクスポートする必要があります。私のデータには "Time " が含まれており、値は " 7.00 PM" です。しかし、これをcssvでエクスポートすると、「19.00」と表示されます。7.00 PMしかし、「 」 を表示したい

$out  .= '"'.$val['first_name'].'",';
$out  .= '"'.$val['second_name'].'",';
$out  .= '"'.$val['pgm_time'].'",';
$f = fopen ('registered_users.csv','w');

// Put all values from $out to export.csv. 
fputs($f, $out);
fclose($f);

header('Content-type: application/csv');
header('Content-Disposition: attachment; filename="registered_users.csv"');
readfile('registered_users.csv');

これらすべての値を出力したところ、正しい時刻 (午後 7 時) が表示されます。しかし、エクスポートすると 19.0 と表示されます。また、データベースには正しい値 (午後 7 時) が含まれています。別のシステムでこれを確認しました。一部のシステムでは問題ありません。しかし、19.00 を示すものもあります。Microsoft のバージョンであるか、エディタの内部設定である可能性があります。なぜこれが起こるのかわかりませんか?

すべてのシステムで 12 時間、つまり 7.00 PM に基づいて時間を表示するソリューションが必要です (エディターとは無関係)。

誰かが..または他の良いコードを知っていますか.私を助けてください...

ありがとう

4

2 に答える 2

1

適切な場所を見てください

Microsoft のバージョンであるか、エディターの内部設定である可能性があります。

ファイルをメモ帳またはその他のテキスト エディタで開くと、実際に保存されているテキストが表示されます。これは (おそらく) "7.00 PM" になります。そうでない場合は、再現可能なコードを示す質問を修正して、「問題」を含む csv ファイルを生成してください。

ただし、ファイルを Excel で開いた場合は、ファイルを開いているだけではなく、インポート プロセスが実行されています。Excel は、各列に適切な型を割り当てようとします。この場合、それは日付であり、適切に変換されます。あなたが説明しているのは、日付を表す方法に関するユーザー独自の Excel 設定です。これは、あなたの質問がphpとはほとんど関係がないことを意味します-そして、Excelがcsvファイルを読み取る方法がすべてです.

Excelでcsvファイルの「テキストとして表示」を強制する

これを行う理由は不明です (理由を知っていると、別の提案につながる可能性があります)。ただし、フィールド値の前に一重引用符を付けると'、セル値を自動的に決定するのではなく、セル値をテキストとして表すように Excel に強制されます/列タイプ:

$out  .= '"\''.$val['pgm_time'].'",';

つまり、次を取得します。

"foo","bar","'7.00 PM"

これにより、csv ファイルが問題になるか、それを読み取る必要がある他のプロセスにとって役に立たなくなる可能性があります。

于 2013-01-15T07:34:23.813 に答える
0

なぜそれを強制したいのですか?これは、データを表示しているものに任せるべきものの 1 つです。実際、データを 12h 形式で出力したとしても、CSV を Excel などで開くと、とにかく 24h 形式に再フォーマットされる可能性があります。時間データは、どのような形式でもそのままにしておくことをお勧めします。

于 2013-01-15T07:21:21.147 に答える