繁体   English   中英

创建具有特殊字符的CSV文件

[英]Creating CSV file with special characters in fields

我已经在stackoverflow上寻找了类似的问题,但没有找到任何问题。 我想以CSV格式导出表格,以便可以将其导入Excel。 每个单元格包含文本,每行具有相同数量的列。 我尝试过的格式如下:

"d1"|"d2"|"d3"|"d4"

其中d1,d2,d3,d4是我要放入每个单元格中的原始字符串。 我有以下问题:

  1. | 可以包含在数据中。 这真的有问题吗? 可能不是因为我在字符串前后加上了双引号。 也许我什至可以使用逗号,并且不会有什么不同。
  2. “本身可以包含在数据中。我应该逃避它以某种方式?我目前的解决方法是删除领先,并把它周围我的双引号前,后从原始字符串双引号,这似乎工作,但我认为避免使用内部双引号会更干净。您知道该怎么做吗?
  3. 数据也可以包含换行符。 我希望Excel将数据保存在一个单元格中,并根据换行符在该单元格中设置文本格式。 目前,情况并非如此:Excel将换行符解释为终止一条记录,并在导入的表中添加了额外的行。

您是否知道如何解决上述问题? 是否有一些有关这些特定问题的在线文档? 从昨天开始我一直在搜索,但没有找到任何东西。

Excel支持值中的换行符。 例如,使用Excel用户界面,可以通过为每个换行符键入Alt-Enter来将"foo\\n\\bar\\nbaz"放入单元格中。

关于Excel的棘手问题是,在使用逗号作为小数点的语言环境中,Excel使用冒号作为字段定界符。 没有任何Excel可以读取的通用/国际格式。

如果Java中没有用于读取/写入CSV文件的软件包,我会感到非常惊讶。 Python有一个允许您在输入和输出上指定定界符,双引号char,记录分隔符等的代码。

但是,如果要编写自己的代码,请对要编写的每一行遵循以下伪代码:

for each field in the row:
    if field contains quotechar:
        double all quotechars in field
        field = quotechar + field + quotechar
    else if field contains delimiter, CR, or LF:
        field = quotechar + field + quotechar
    else:
        avoid waste of space and ugly visual impact by NOT doing unneeded quoting
join field strings separated by delimiter
append CR LF 
write the row string using binary mode (so Windows runtime doesn't give you 2xCR)

请仔细注意(1)以上所有内容均以8位字符为前提(2)我避免使用模糊的术语“换行符”。

我发现最好用逗号分隔来完成CSV,并引用值,这样就不会误解值中的逗号。 用双引号来引用报价。 因此,以下四个值:

one
two
three with "quoted" value
four

变成:

one,two,"three with ""quoted"" value",four

我认为标准CSV实现不可能支持值中的换行符; 特别是不在Excel中。 尝试在Excel中使用换行符创建单元格(甚至可以吗?)并另存为CSV,以查看是否可行。

http://en.wikipedia.org/wiki/Comma-separated_values

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM