前两天总结了一下把Excel文件导出.csv文件,今天遇到的问题是用PHP汇总数据,写入到.csv格式的数据表文件,结果又遇到一些问题。
主要问题是用EXCEL打开PHP生成的.csv数据表,显示格式不正确,罗列如下:带前导0的文本数据被视为数字而不显示前面的0了,如学号09210110011显示成了9210110011
日期格式数据被自动做了显示处理,如2009-10-17 08:43:40显示成了2009-10-17 8:43
文本数据中的半角逗号(,)被视为字段分隔符导致单元格数据错位
文本数据中带有回车符,被视为数据行分隔符导致数据错误
用文本编辑器打开生成的.cvs文件,数据如下:
学号,姓名,专业,申请理由,申请时间
09210110011,测试,光源,不知道怎么写
难道,这就是理由,2009-10-17 08:43:40
用Excel打开上面的.cvs文件,如下图所示:
Excel打开.csv文件(修改前)
以上显然不是我想要的,对于电脑盲来说看着前面不带0的学号估计会觉得莫名奇妙,所以改啊改啊~
处理方法如下:
1、使用 ="数据" 法避免智能解析
上面第一条和第二条情况都是因为Excel自动将识别了数字和日期导致的,方法便是避免Excel避免智能解析这些数据。采用的方法是将 数据 改为 ="数据" 形式,这样Excel便会将数据当做文本处理,而不会识别为数字或日期了。
2、使用 "数据" 法避免错误分割数据
将带换行符和半角逗号的数据用半角双引号括起来,即转换 数据 为 "数据" 形式,这样Excel便不会将数据中的换行符和半角逗号作为数据分割符了,从而避免了第三条和第四条的情况。
以上修改自然是改PHP代码了。
重新生成.csv文件,用文本编辑器打开如下:
学号,姓名,专业,申请理由,申请时间
="09210110011",测试,光源,"不知道怎么写
难道,这就是理由",="2009-10-17 08:43:40"
用Excel打开重新生成的.cvs文件,如下图所示:
Excel打开.csv文件(修改后)
顺利搞定,over! :-D
日期格式数据被自动做了显示处理,如2009-10-17 08:43:40显示成了2009-10-17 8:43
本博客所有文章如无特别注明均为原创。