[英]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)。 在導入向導上,選擇列的數據類型為“文本”而不是“常規”:
嘗試將其轉換為字符串,例如:
fputcsv($fp, (string) $val);
或者,打開 XLS 文件將截斷前導 0,因此嘗試在零之前添加 /t 以避免在創建行值時截斷 0。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.