【问题标题】:Export Excel to CSV with pipe delimiter without changing List Separator settings使用管道分隔符将 Excel 导出为 CSV,而不更改列表分隔符设置
【发布时间】:2018-04-01 01:25:55
【问题描述】:

我需要将 Excel 文件导出为 CSV 以导入数据库。我不能使用逗号,因为某些文本字段中有逗号。我尝试过但效果不佳的事情:

  • 将文本中的逗号更改为句点。这行得通,但不是很好。
  • 更改控制面板设置并将“列表分隔符”设置更改为管道。这也可以,但是我必须在 Excel 的公式中使用管道,这不是很好。

还有其他选择吗?

【问题讨论】:

  • 是否可以使用 VBA 宏来执行此操作?如果可以接受,那么我可以发布一个 VBA 宏。
  • 实际上没有理由为此制作宏。有可靠的实用程序可以以行业标准方式实现这一目标。

标签: excel csv


【解决方案1】:

您可以使用 Excel 的 TEXTJOIN 公式将您想要的所有列与特定的分隔符(如管道)连接起来。

以下列的示例:

您可以使用如下公式,上面的每一行一个:

=TEXTJOIN("|",FALSE,A1,B1,C1,D1)

=TEXTJOIN("|",FALSE,A2,B2,C2,D2)

结果将是:

最后,您可以将此结果保存为文本文件。

【讨论】:

    【解决方案2】:

    使用逗号可以正常工作。从 Excel 导出到 CSV 时,文本中存在的逗号不被视为分隔符,因为它们用引号引起来。现在所有数据库导入实用程序都应该考虑到这一点。

    如果文本中没有逗号: 1,2,3,4,this is text

    如果您的文本中有逗号: 1,2,3,4,"this, is text"

    CSV 导入不会将逗号视为包含在文本中的分隔符。

    【讨论】:

    • 这是一个糟糕的答案,因为一个单元格包含诸如“Hello world”之类的内容,所以我有一栏打破一切的次数,当你用逗号分割时,你必须跟踪减少字段数。永远不要这样做。
    • 那么,您的解决方案是永远不要在字段中放置逗号? CSV 表示逗号分隔值。如果您选择其他分隔符,则它不再是 CSV。
    • 这两点都不正确。在 windows 中,分隔符在您的区域设置中设置,windows 将在 csv 文件中使用它。我没有说永远不要在字段中使用逗号,我说永远不要使用逗号作为分隔符。为了增加我对分隔符的悲伤程度, 'I', '\t', ',' 。使用语音标记来标记文本,意味着您需要一个状态机来解析它而不是一个拆分命令。另外,请祈祷您永远不会从欧盟获得任何 csv,那里的某些国家/地区使用逗号作为小数点。
    • 我不提倡使用逗号。我更喜欢管道。关键是 OP 在不了解它们通常如何解析的情况下询问了一个关于 CSV 的问题。无论如何,我提出的观点是完全正确的。如果您将 CSV 与 .csv 格式混为一谈,那就看您自己了。 .csv 与 .txt 没有什么不同,因为它们只是平面文件。
    【解决方案3】:

    您应该用引号将所有字段括起来: "值 1","值,2","值 3"

    【讨论】:

    • 数字除外
    猜你喜欢
    • 2016-03-13
    • 2011-06-16
    • 2018-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-12
    • 2017-06-23
    • 1970-01-01
    相关资源
    最近更新 更多