12

PHPスクリプトを使用して、結果セットクエリからExcelCSVファイルを生成しています。すべて正常に動作しますが、Excelファイルを読み取ると、先行ゼロを表示できません。

これは私のコードです:

$rows = $this->Query($sql);

$filename = "/www/zendsvr/htdocs/Project/public/report.xls";
$realPath = realpath( $filename );

$filename = realpath( $filename );
$handle = fopen( $filename, "w" );
$finalData = array();

for( $i = 0; $i < count( $rows ); $i++ ) {
    $finalData[] = array( utf8_decode( $rows[$i]->CODE ) );
}

foreach ( $finalData AS $finalRow ) {
    fputcsv( $handle, $finalRow, "\t" );
}

fclose( $handle );

を作成するvar_dump()$finalData[]、正しい値(たとえば、「000198」、「000199」、「000200」)が表示されますが、XLSファイルの同じ値は198,199,200です。

XLSファイルの先行ゼロも表示するにはどうすればよいですか?

4

4 に答える 4

25

DemoUser のアプローチに追加するには:

この\tアプローチは私にとってはうまくいきましたが、わずかな変更がありました

$column_data = "\t000543";

\tCSVが正しく、Excelが「間違っていた」にもかかわらず、Excelで\t表示するときに先頭のゼロをそのまま維持することに成功した場合でも、追加すると先頭のゼロが消えるという問題が解決しました。

于 2016-02-16T19:15:19.717 に答える
5

データは正しく保存されています。賢くなろうとしているのは Excel です。

ファイルを直接開くのではなく、Excel のデータ インポート ウィザードを使用します (必要に応じて、.csv ファイルの名前を .txt に変更します)。インポート ウィザードで、列のデータ型を「一般」ではなく「テキスト」として選択します。

テキスト インポート ウィザードのステップ 3

于 2012-06-18T07:46:50.810 に答える
3

次のように文字列にキャストしてみてください。

fputcsv($fp, (string) $val);

または、XLS ファイルを開くと先頭の 0 が切り捨てられるため、行の値を作成する際に 0 が切り捨てられないように、ゼロの前に /t を追加してみてください。

于 2012-06-18T07:37:41.327 に答える