【PHP】写入.csv文件注意点



    前两天总结了一下把Excel文件导出.csv文件,今天遇到的问题是用PHP汇总数据,写入到.csv格式的数据表文件,结果又遇到一些问题。

    主要问题是用EXCEL打开PHP生成的.csv数据表,显示格式不正确,罗列如下:

    1. 带前导0的文本数据被视为数字而不显示前面的0了,如学号09210110011显示成了9210110011
    2. 日期格式数据被自动做了显示处理,如2009-10-17 08:43:40显示成了2009-10-17 8:43
    3. 文本数据中的半角逗号(,)被视为字段分隔符导致单元格数据错位
    4. 文本数据中带有回车符,被视为数据行分隔符导致数据错误


    用文本编辑器打开生成的.cvs文件,数据如下:

    学号,姓名,专业,申请理由,申请时间
    09210110011,测试,光源,不知道怎么写
    难道,这就是理由,2009-10-17 08:43:40

    用Excel打开上面的.cvs文件,如下图所示:

    Excel打开.csv文件(修改前)

    Excel打开.csv文件(修改前)

    以上显然不是我想要的,对于电脑盲来说看着前面不带0的学号估计会觉得莫名奇妙,所以改啊改啊~

    处理方法如下:

    1、使用 ="数据" 法避免智能解析

    上面第一条和第二条情况都是因为Excel自动将识别了数字和日期导致的,方法便是避免Excel避免智能解析这些数据。采用的方法是将 数据 改为 ="数据" 形式,这样Excel便会将数据当做文本处理,而不会识别为数字或日期了。

    2、使用 "数据" 法避免错误分割数据

    将带换行符和半角逗号的数据用半角双引号括起来,即转换 数据 为 "数据" 形式,这样Excel便不会将数据中的换行符和半角逗号作为数据分割符了,从而避免了第三条和第四条的情况。

    以上修改自然是改PHP代码了。

    重新生成.csv文件,用文本编辑器打开如下:

    学号,姓名,专业,申请理由,申请时间
    ="09210110011",测试,光源,"不知道怎么写
    难道,这就是理由",="2009-10-17 08:43:40"

    用Excel打开重新生成的.cvs文件,如下图所示:

    Excel打开.csv文件(修改后)

    Excel打开.csv文件(修改后)

    顺利搞定,over! :-D

    1. 日期格式数据被自动做了显示处理,如2009-10-17 08:43:40显示成了2009-10-17 8:43


    本博客所有文章如无特别注明均为原创。
    复制或转载请以超链接形式注明转自枫芸志,原文地址《【PHP】写入.csv文件注意点
    标签:
    分享:

还没有人抢沙发呢~

无觅相关文章插件,快速提升流量