在 Mac 上的 Numbers 表格中,通过文件 > 导出为 > CSV导出电子表格,然后检查包含逗号或引号的值在生成的文件中是否仍保持为单个字段。CSV 会在特殊字段两端加上引号,并将作为值一部分的任何引号加倍。Numbers 表格记录了针对表格、表格名称和文本编码的 CSV 导出选项,但并未提供设置来选择字段的加引号方式;请直接使用导出流程并验证输出,而不是去寻找“字段加引号”的控件。(Apple Numbers 表格导出指南,RFC 4180)

CSV 如何处理逗号和引号

通常情况下,逗号用于将一个 CSV 字段与下一个字段分隔开。如果值本身包含逗号,则该字段会被双引号包裹。如果值中包含原义双引号,则该引号在被包裹的字段内会写作两次(双重引号)。RFC 4180 还说明了对包含换行符的字段使用引号包裹,并指出不同软件对 CSV 的实现可能有所差异,因此接收方应用程序的要求至关重要。(RFC 4180,第 2 节)

例如,假设一行包含三个值:North、Smith, Lee 和 She said "ready"。有效的 CSV 表示形式为:

North,"Smith, Lee","She said ""ready"""

外层引号标记了第二个和第三个字段。最后一个字段内部的双重引号表示属于该值本身的引号。当 CSV 读取器解析此行时,这些包裹字段的引号和转义对属于结构字符;解析出的实际值应为 Smith, Lee 和 She said "ready"。

从 Mac 上的 Numbers 表格导出 CSV

  1. 在 Numbers 表格中打开电子表格,并检查要导出的表格。如果工作簿包含多个表格,请注意是需要为每个表格单独生成一个文件,还是合并为一个文件。

  2. 从菜单栏中选择文件 > 导出为 > CSV。

  3. 在导出选项中,选择是为每个表格创建单独的文件,还是将所有表格合并到一个文件中。仅在接收方需要时才勾选包括表格名称。如果需要更改文本编码,请打开高级选项;Apple 将这些列为 CSV 导出选项。(Apple 支持)

  4. 继续下一步进入存储对话框,选择目标位置和文件名,然后点按导出。Numbers 表格会保存一份导出的副本;对该副本的更改不会改变原始电子表格。如果以后还需要可编辑的工作簿,请保留原 Numbers 表格文件。(Apple 支持)

Numbers 表格记录的 CSV 选项中不包含文本限定符或“始终为字段加引号”复选框。请勿为了保护逗号而手动为单元格值添加引号:导出程序应当自动将值编码为 CSV 结构,而手动添加的引号会变成字面数据,其自身可能还需要进行转义。Apple 的指南将 CSV 描述为用逗号分隔的值,但并未明确说明每种情况下的具体引号包裹行为。如果某个特定的接收方需要特定的 CSV 方言规范,请确认其需求并根据要求检查导出的文件。

发送前检查导出的文件

如果需要检查实际字符,请在纯文本查看器中打开该 .csv 副本。确认包含逗号的值已被引号包裹,且内部的双引号已加倍。不要仅仅通过计算逗号数量来判断结果:出现在引号包裹字段内的逗号是值的一部分,而不是分隔符。

您也可以在电子表格应用程序中打开导出的 CSV,检查受影响的值是否仍保留在一个单元格中。这是一种实用的解析检查方法,不过接收方的系统可能会遵循不同的 CSV 规范。如果某个值被拆分到多列中,或者引号显示为多余的文本,请在正式使用该文件前暂停,并检查原始 CSV 以及接收方的导入要求。

对于 Numbers 表格内置控件无法满足的严格格式要求,请使用明确支持接收方分隔符、引号和编码要求的导出工具,或者向接收方索取其接受的格式。避免使用大范围的查找替换来修复 CSV:在不解析字段的情况下替换逗号或引号,可能会同时破坏分隔符和正常的单元格内容。

最终目标是生成一个解析后能完整保留原始值的 CSV 文件。从 Numbers 表格导出后,检查包含标点符号的代表性数据行,并在发送包含重要数据的文件之前确认接收方能够正确读取。

来源