工作中遇到的php写csv文件问题

来源:互联网 发布:outlook for windows 编辑:程序博客网 时间:2024/06/05 04:02

问题描述:工作中有个项目50w+条数据写文件并上传到服务器,供用户下载的情景。用的方案是php fputcsv函数写数据,文件后缀.txt,默认让用户以记事本方式打开。后来有用户反馈用excel打开每行之间有空白行。

暴露自己的问题:彻彻底底的小白。。。。。。。文件格式的区别,为什么txt看起来正常用文本编辑器或csv打开就多了空白行,习惯了导出格式是csv但为什么选择csv而不是excel,除技术外的问题是没弄清楚用户的需求。

一点一点解疑惑:

1 为什么通常情况下选择了csv

1)写文件的效率csv比excel高,写txt文件的效率也比较高

2)同样的数据量,生成的csv文件大小远远小于excel文件【看网上的解释是excel不能流式处理,导致占用的内存较大,容易导致内存溢出,excel版本低不能超过65536行;csv方式跟导出txt一样,以文本流的方式进行流式处理,导出几百万条数据还是很easy的,流式处理占用内存低服务器对浏览器的响应也快】

这样看来,选择生成csv文件是没问题的。

2 换行符问题

没搞清楚用户需求,产品也没有明确说明,做的时候生成的文件后缀是txt,默认用记事本打开(当时是这么定的,但实际生产环境下不同客户需要的文件格式不同,有的要求txt,有的excel格式,但他们不会用csv)。xp中记事本不支持/n转义字符,所以用记事本打开时数据没有换行,因此在写文件时加了/r/n转义字符,这样用记事本打开数据换行了,但是用excel打开时就多了很多空白行。感觉这样就很尴尬,两者不能兼容,不知道大牛们有没有什么好办法。

3 对文件格式傻傻分不清

csv文件强转为xls格式,一个数据中加了逗号分隔符并且本来的两列在一个单元格里,个人是因为excel中逗号不能作为列的分隔符。csv文件编辑保存容易出错。csv、excel、txt文件的区别,用文本编辑器打开时能否反映文件中换行、空格的真实情况?

这些常识性的问题之前都没考虑过。路漫漫其修远兮!

0 0
原创粉丝点击