【问题标题】:Excel Ruins CSVExcel 废墟 CSV
【发布时间】:2014-07-31 11:24:42
【问题描述】:

我有一个从 vb.net 程序导出的 CSV 文件。我有几个字段可以手动输入数据,然后重新保存 CSV(来自 Excel)。每当我从 Excel 中保存 CSV 时,它都会从每一列中删除“”。如何在不破坏 CSV 格式的情况下手动编辑 CSV 文件?

【问题讨论】:

    标签: excel csv export-to-csv


    【解决方案1】:

    字段周围的引号不是强制性的,仅当字段包含某些字符时才需要。所以严格来说,该文件仍然是有效的 CSV,并且根本没有被破坏。

    Excel 会将整个 CSV 加载到内存中,完全忘记其格式并写入一个全新的文件。我不认为有办法保留 CSV 文件的现有格式。

    This thread on SuperUser 链接到一些可能对您有帮助的宏。

    【讨论】:

    • 除非其中一列中有空格,否则在导入时,它会将空格视为下一列。渲染我的 csv 文件无用
    • 那进口商错了。空格不是分隔符。
    • 我没有能力更改进口商。
    • 好吧,你也没有能力改变 Excel。 :) 所以您可以使用宏(请参阅我在答案中链接到的线程),或者使用其他工具(如 Open Office)来生成不同的 CSV。只要您知道 Excel 在这方面没有“错误”。
    • @Shmewnix - 带空格的字段值不需要在 CSV 中引用。你用什么程序打开这个 CSV 文件,它显示为“无用”?
    【解决方案2】:

    CSV 是纯文本文件(逗号分隔值),因此它们不需要任何特定的编辑器。

    您可以使用 Windows 记事本完成这项工作,但其他高级编辑器会更容易使用(试试 NotePad++,它可以让您保存以前的查找和替换命令)。

    根据您的 Excel 版本,我认为您可以对其进行配置,使其不会删除引号。

    或者,您可以直接在 Excel 中添加引号,然后 CSV 输出将有 3 个引号来分隔您的所有字段,但这可能是处理您的问题的一种方法。

    【讨论】:

    • 我这里有 Excel2010,但我找不到任何不删除引号的保存选项。
    • 2010年也找不到。保存为非excel格式时有一个选项。
    【解决方案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/

    【讨论】:

      猜你喜欢
      • 2012-01-20
      • 1970-01-01
      • 1970-01-01
      • 2012-08-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-26
      • 1970-01-01
      相关资源
      最近更新 更多