fputcsv display leading zeros
To add to DemoUser's approach:
The \t
approach worked for me however with a slight change
$column_data = "\t000543";
Adding the \t
solved my problem of having the leading zero's disappear, even though the CSV was correct and Excel was 'wrong' the \t
worked in keeping the leading zeros intact when displaying in excel.
Your data is saved correctly, it is Excel who is trying to be smart.
Use the Excel import data wizard instead of opening the file directly (rename the .csv file to .txt if necessary). On the import wizard, choose the data type of the column as "text" instead of "general":
I was surprised after so many years no-one came with a working solution.
Here's what worked for me:
$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'] . "\""]);
}