簡體   English   中英

fputcsv 顯示前導零

[英]fputcsv display leading zeros

我正在使用 PHP 腳本從結果集查詢生成 excel CSV 文件。 一切正常,但是當我閱讀我的 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 );

如果我創建$finalData[]var_dump()我看到正確的值,例如 '000198', '000199', '000200' 但我的 XLS 文件中的相同值是 198,199,200

我怎樣才能在 XLS 文件中顯示前導零?

添加到 DemoUser 的方法:

\\t方法對我有用,但略有變化

$column_data = "\t000543";

添加\\t解決了我的前導零消失的問題,即使 CSV 是正確的並且 Excel 是“錯誤的”, \\t在 excel 中顯示時仍能保持前導零完好無損。

這么多年沒有人提出有效的解決方案,我感到很驚訝。

這對我有用:

$records = [
    ['name' => 'John', 'phone' => '01234567'],
    ['name' => 'Jane', 'phone' => '01234569'],
];

$file = fopen('php://output', 'w');

fputcsv($file, ['Name', 'Phone N°']);

foreach ($records as $record) {
    fputcsv($file, [$record['name'], "=\"" . $record['phone'] . "\""]);
}

您的數據已正確保存,Excel 正在努力變得聰明。

使用 Excel 導入數據向導,而不是直接打開文件(如有必要,將 .csv 文件重命名為 .txt)。 在導入向導上,選擇列的數據類型為“文本”而不​​是“常規”:

文本導入向導步驟 3

嘗試將其轉換為字符串,例如:

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

或者,打開 XLS 文件將截斷前導 0,因此嘗試在零之前添加 /t 以避免在創建行值時截斷 0。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM