我正在使用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 );
Run Code Online (Sandbox Code Playgroud)
如果我创建一个$ finalData []的var_dump(),我会看到正确的值,例如'000198','000199','000200',但我的xls文件中的相同值是198,199,200
怎样才能在xls文件中显示导致零?谢谢
Ray*_*Ray 16
要添加到DemoUser的方法:
\t然而,这种方法对我有用,只是略有改变
$column_data = "\t000543";
Run Code Online (Sandbox Code Playgroud)
添加\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'] . "\""]);
}
Run Code Online (Sandbox Code Playgroud)
您的数据保存正确,Excel正在尝试变聪明.
使用Excel导入数据向导而不是直接打开文件(如果需要,将.csv文件重命名为.txt).在导入向导上,选择列的数据类型为"text"而不是"general":
