• 如何转义CSV文件中的逗号


    CSV全称是:Comma Separated Values 或者 Character Separated Values

    尽管第一种说法更常见,但我觉得还是第二种说法更确切一些,因为你可以使用其它字符做分隔符。

    使用逗号做分隔符的CSV文件有一个好处:你可以直接用Excel打开。如果使用其它分隔符,比如“|”,你必须告诉Excel该文件使用“|”作分隔符,Excel才能把它导入进来。 

    前几天,project manager告诉我:我们有许多CSV文件,都是使用“|”做分隔符,用Excel打开的时候比较麻烦,用户想在Excel中直接打开。这样就需要使用,做分隔符。但是文件中有些字段含有逗号,必须对这些逗号特殊处理,才能保证CSV文件在Excel中正确打开。他还给了我一个算法:

    如果字段中有逗号(,),该字段使用双引号(")括起来;

    如果该字段中有双引号,该双引号前要再加一个双引号,然后把该字段使用双引号括起来。

    看完project manager的要求,我真是满头起包啊。在IT业混了十几年了,竟然不知道这样处理逗号。

    举几个例子:

     

    字段处理前

    字段处理后

    abc,d2

    "abc,d2"

    ab"c,d2

    "ab""c,d2"

    "abc

    """abc"

    ""

    """"""

     

    如果字段中有两个挨着的双引号,比如:aaa""ccc。这种情况不用特殊处理。这是我在写这篇博客的时候才想起来的,赶忙使用Excel测试了一下。还好,不用特殊处理就能正常打开,不然我还得改程序。当然了,如果你把它处理成:"aaa""""ccc" Excel也能正常打开。事后总结总结真是有好处啊。

    另外,如果某字段第一个字符是空格,第二个字符是双引号,这种情况不用特殊处理。Project Manager在给我描述算法的时候,也举了一个字段只有一个双引号的例子,但他不小心在双引号前面加了个空格,把问题掩盖过去了。

    我是在WinXPMS Excel2007下测试的。如果运行在其他环境和应用程序下,还需进行测试,规则可能不一样。

     

    (这是一篇老博文,11-1-22 下午11:44 发布在Google Blogger上。但我只是几年前在那里发了几篇文章,早已经不维护了,干脆把看得上眼的文章搬过来算了)

  • 相关阅读:
    WPF中Auto与*的区别
    在XAML网格中RowDefinition High=“10*”
    WPF语言中Grid布局
    C# 解压缩文件
    WPF Visibility的用法
    Inno setup Compiler 安装程序
    征战蓝桥 —— 2014年第五届 —— C/C++A组第1题——猜年龄
    信息学奥赛一本通(C++)在线评测系统——基础(一)C++语言——1082:求小数的某一位
    信息学奥赛一本通(C++)在线评测系统——基础(一)C++语言——1082:求小数的某一位
    信息学奥赛一本通(C++)在线评测系统——基础(一)C++语言——1082:求小数的某一位
  • 原文地址:https://www.cnblogs.com/xiaomiganfan/p/4073454.html
Copyright © 2020-2023  润新知