3/29/2009

CSV文件格式简介

CSV即Comma Separate Values的缩写,现在常见到这种格式的文件,例如Google adsense的自定义报表就有这种格式。

绝大多数知道CSV的人都认为这个格式个归属于Excel家族的东西,至少我们不确定的时候可以提出一个佐证:大部分的时候我们都使用excel来操作CSV格式。是的,我的确要再这里说一个”但是”——但是我真不能确定这个格式是否就是微软定义的,可以确定的是,这个格式是为了异构下传递数据的时候使用的。

windows平台下一般将CSV文件定义为xml后缀,用文本编辑器就可以打开。

在项目中进行报表设计时,考虑到方便灵活及让客户可自行修改格式且保存数据,我想将数据输出到CSV,而不是传统意义上的Excel格式,这个时候需要我对CSV的格式进行了解,CSV的主站在

http://www.creativyst.com/Doc/Articles/CSV/CSV01.htm

具体多少人知道确切的CSV格式?如果在一个字段中存在回车换行如何处理?字段的开始和结束的双引号有什么用?我想没有使用的时候,没人关心这个问题,因为大部分的时候我们使用excel打开CSV文件,然后再使用Excel转换CSV文件,没人关心这个CSV文件里面具体包含了什么东西。

CSV格式的具体规范如下

每条记录为一行
除非记录的字段中包含一个回车/换行符号,这样会导致这条记录保存为多行。换行的字段必须使用双引号括起来。
字段之间使用逗号进行分割
字段的前置空格和后置空格都被自动忽略。可以使用双引号括起来以保持这些空格。
字段中如果包含逗号的值,那么这个字段必须使用双引号括起来。
字段中包含双引号的时候使用两个双引号进行转义。
第一行的数据可以是列的头信息
这个世界想当然的东西太多了,呵呵,那么JSON的规范几个人又看过呢?简单,的确简单,但是并不意味着简单就没有内涵。

CSV有个升级版的兄弟,CTX,也在同一个站点上,感兴趣的自己去看看把。

The CSV (”Comma Separated Value”) file format is often used to exchange data between disparate applications. The file format, as it is used in Microsoft Excel, has become a pseudo standard throughout the industry, even among non-Microsoft platforms.

As is the case with most exchange formats since XML, CSV files have become somewhat of a legacy format. New applications that wish to include an export format will generally use XML today (though there may be exceptions). In legacy systems though (pre-XML), CSV files had indeed become a de facto industry standard. Just as there are still billions of lines of CoBOL code in use today that need to be maintained, support for a legacy standard such as CSV is likely to be required long after it has stopped being implemented in new designs.