【发布时间】:2014-07-31 11:24:42
【问题描述】:
我有一个从 vb.net 程序导出的 CSV 文件。我有几个字段可以手动输入数据,然后重新保存 CSV(来自 Excel)。每当我从 Excel 中保存 CSV 时,它都会从每一列中删除“”。如何在不破坏 CSV 格式的情况下手动编辑 CSV 文件?
【问题讨论】:
标签: excel csv export-to-csv
我有一个从 vb.net 程序导出的 CSV 文件。我有几个字段可以手动输入数据,然后重新保存 CSV(来自 Excel)。每当我从 Excel 中保存 CSV 时,它都会从每一列中删除“”。如何在不破坏 CSV 格式的情况下手动编辑 CSV 文件?
【问题讨论】:
标签: excel csv export-to-csv
字段周围的引号不是强制性的,仅当字段包含某些字符时才需要。所以严格来说,该文件仍然是有效的 CSV,并且根本没有被破坏。
Excel 会将整个 CSV 加载到内存中,完全忘记其格式并写入一个全新的文件。我不认为有办法保留 CSV 文件的现有格式。
This thread on SuperUser 链接到一些可能对您有帮助的宏。
【讨论】:
CSV 是纯文本文件(逗号分隔值),因此它们不需要任何特定的编辑器。
您可以使用 Windows 记事本完成这项工作,但其他高级编辑器会更容易使用(试试 NotePad++,它可以让您保存以前的查找和替换命令)。
根据您的 Excel 版本,我认为您可以对其进行配置,使其不会删除引号。
或者,您可以直接在 Excel 中添加引号,然后 CSV 输出将有 3 个引号来分隔您的所有字段,但这可能是处理您的问题的一种方法。
【讨论】:
Excel 不支持 (afaik) 详细指定应如何将数据导出为 CSV(例如,要使用什么分隔符、编码等)。访问确实如此。因此,您可以做的是,首先将 CSV 文件导入 access,确保指定源文件中使用的分隔符/封装,然后使用 Access 更高级的“导出到文本”方法将数据导出到文件所需的编码和封装。
您应该知道,正如@GolezTrol 所提到的,Excel 不会“打开”CSV 文件。它会加载它们并使用默认设置将它们转换为 Excel 文件,并在您保存时使用默认设置将它们导出到文件中。这些默认设置可能会导致数据损坏。因此,您不应该使用 Excel 来编辑和保存数据,而应该只在使用导入方法时使用它来读取数据,而不是默认设置。
我写了一篇关于纯文本数据文件的常见问题和误解以及使用它们时避免数据损坏的方法的深入文章:http://theonemanitdepartment.wordpress.com/2014/12/15/the-absolute-minimum-everyone-working-with-data-absolutely-positively-must-know-about-file-types-encoding-delimiters-and-data-types-no-excuses/
【讨论】: