我有一个数据库,该数据库按序列号跟踪小部件的销售。用户输入购买者数据和数量,然后将每个小部件扫描到自定义客户端程序中。然后,他们确定订单。所有这些都完美无缺。
一些客户想要购买的小部件的Excel兼容电子表格。我们使用PHP脚本生成此文件,该脚本查询数据库并以CSV格式输出结果以及商店名称和相关数据。这也很好。
在记事本或vi等文本编辑器中打开文件时,该文件如下所示:
"Account Number","Store Name","S1","S2","S3","Widget Type","Date"
"4173","SpeedyCorp","268435459705526269","","268435459705526269","848 Model Widget","2011-01-17"
如您所见,序列号存在(在这种情况下为两次,并非所有辅助序列号都相同),并且是一长串数字。在Excel中打开此文件时,结果变为:
Account Number Store Name S1 S2 S3 Widget Type Date
4173 SpeedyCorp 2.68435E+17 2.68435E+17 848 Model Widget 2011-01-17
如您所见,序列号用双引号引起来。Excel似乎不尊重.csv文件中的文本限定符。将这些文件导入Access时,难度为零。以文本形式打开它们时,一点也不麻烦。但是Excel一定会将这些文件转换成无用的垃圾。可以说,试图指导最终用户使用非默认应用程序打开CSV文件的技术已经变得很烦人。有希望吗?是否有我找不到的设置?Excel 2003、2007和2010似乎就是这种情况。
Excel does not seem to respect text qualifiers in .csv files
-双引号不是文本限定符,它们只是在数据中使用逗号,如果您在数据中不使用逗号,则它们是没有意义的。CSV文件中的所有数据都是无类型的,因此Excel只能猜测您的大序列号是一个数字,也就是说,当您以Excel的15位数字的最大精度运行时,这就是将数字截断的原因。