我想生成一个CSV文件供用户使用Excel打开它.
如果我想在值中转义逗号,我可以将其写为"640,480".
如果我想保留前导零,我可以使用="001234".
但是如果我想在值中保留逗号和前导零,则写为="001,002"将被分割为两列.表达正确的数据似乎没有解决方案.
有没有办法在CSV for Excel中表达001,002?
Kent Fredric的答案包含解决方案:
"=""001,002"""
(我很想把它作为一个单独的答案发布,因为肯特的回答并不清楚这是一个有效的Excel解决方案.)
在数据上放置前缀String:
"N001,002","N002,003"
(只要该前缀不是E)
上面的表示法(至少在OpenOffice中)解析为总共2列,正确存储了N001,002个字节.
CSV规范说,允许在引号字符串中.
此外,来自经验的警告:确保您也使用电话号码执行此操作.否则,Excel会将电话号码解释为浮点数并以科学记数法保存:/,而1.800E10并不是一个非常好的电话号码.
在OpenOffice中,此RawCSV块也按预期解码:
"=""001,002""","=""002,004"""
即:
$rawdata = '001,002'; $equation = "=\"$rawdata\""; $escaped = str_replace('"','""',$equation); $csv_chunk = "\"$escaped\"" ;