【问题标题】:Escaping quotes and delimiters in CSV files with Excel使用 Excel 转义 CSV 文件中的引号和分隔符
【发布时间】:2017-09-02 14:14:45
【问题描述】:

我尝试在 Excel 中导入 CSV 文件,使用 ; 作为分隔符,但有些列包含 ; 和/或引号。

我的问题是:我可以使用双引号来忽略特定字符串的分隔符,但如果字符串中有双引号,它会忽略分隔符,直到第一个双引号,但不是之后。 不知道有没有说清楚,没那么好解释。

我会尝试用一个例子来解释:

假设我有这个字符串 this is a;test :我在字符串周围使用双引号,以忽略分隔符 => 它有效。

现在如果这个字符串包含分隔符和双引号:我的把戏不再起作用了。例如,如果我有字符串 this; is" a;test :我在字符串周围添加的双引号忽略第一部分的分隔符(this; is 部分中的分隔符被正确忽略,但由于后面有双引号,Excel 不会忽略a;test 部分中的下一个分隔符。

我尽量说清楚了,希望你能明白是什么问题。

【问题讨论】:

  • 您可以用 | 之类的字符替换所有双引号。 = Chr(124) 并在成功导入后反转替换。
  • 如果我理解正确,我应该用CHAR(124) 替换所有" 吗?所以 Excel 用| 替换了所有引号,但是在 Excel 中之后如何反转它呢?

标签: excel csv delimiter double-quotes


【解决方案1】:

当在 csv 文件中读取带引号的字符串时,Excel 会将所有双引号 ("") 对解释为单个双引号 (")。

所以"this; is"" a;test" 将被转换为一个包含this; is" a;test 的单元格

所以用双引号对替换字符串中的所有双引号。

Excel 将在导出为 CSV 时反转此过程。

这是一些 CSV

a,b,c,d,e
"""test1""",""",te"st2,"test,3",test"4,test5

这是导入 Excel 后的样子:

【讨论】:

    【解决方案2】:

    在 openOffice 中导入您的 Excel 文件并导出为 CSV(与 Excel csv、utf8 不同,列转义为“;”)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-02-18
      • 2018-10-05
      • 2021-05-23
      • 2015-10-12
      • 1970-01-01
      • 2014-10-03
      • 1970-01-01
      相关资源
      最近更新 更多