【问题标题】:generating/opening CSV from console - file is in wrong format error从控制台生成/打开 CSV - 文件格式错误
【发布时间】:2010-11-26 15:26:43
【问题描述】:

我正在使用控制台应用程序写出一个逗号分隔的文件,而不是使用 Process 打开文件。这是将查询结果转储到 excel 中的一种快速而肮脏的方式。

有一段时间这很好用,但最近我开始收到“您尝试打开的文件'blah.csv'的格式与文件扩展名指定的格式不同”。

点击“是”后

Excel 检测到 blah.csv 是一个 SYLK 文件,但无法加载它。文件有错误或者不是 SYLK 文件格式。单击“确定”尝试以其他格式打开文件。

按 OK 将打开它,并正确显示。

我在网络世界中看到了一些解决方案,其中添加了 content-disposition 标头,但由于我使用进程打开它,我无法应用该修复程序。

我打开文件的代码:

ProcessStartInfo info = new ProcessStartInfo();
info.FileName = filePath;
info.UseShellExecute = true;
Process.Start(info);

如果我在 Notepad++ 中打开文件并显示所有字符,它只会显示为带有 CR LF 行结尾的常规 CSV。

经过一番调查,标题行似乎触发了错误。如果我只是在标题前写一个空行,错误就会消失。标题如下所示:

标题1,标题2,标题3 CRLF

【问题讨论】:

  • 你能把文件的前几行贴出来吗?如有必要,匿名。

标签: c# excel file-io export-to-excel


【解决方案1】:

看看这里:http://support.microsoft.com/kb/323626

在标题行的前两个字符中似乎有 ID 是问题所在 - 在我看来,Excel 的行为非常奇怪。

【讨论】:

  • 谢谢,是的,我的字段以“ID...”开头.. 这很奇怪,感谢微软!
  • 我刚刚用这个答案解决了我的问题(与 OP 相同)。谢谢!
  • 当我遇到这个问题时,我直觉地认为这可能是问题所在,但后来我认为他们不会那样做......
  • 相同。谢谢,约翰。谢谢你,Readmond Hellion;生命的浪费和灵魂的破碎。
【解决方案2】:

CSV 以两个字符 ID 开头。如果你用双引号将字符括起来,它应该可以正常工作。

【讨论】:

    【解决方案3】:

    (已编辑) 我遇到了类似的问题 - 我遇到了完全相同的错误,但在我的情况下,这是在频繁使用数月后突然发生的。 我想知道问题是否真的是“ID”列标题,微软的解决方案没有解释为什么,正如 OP 所说,“有一段时间这很好用”,然后变成了一个问题。

    我发现在我的场景中有一些来自上游系统的错误数据,其中在某人的名字中添加了一个逗号,这使 .csv 文件无效。这导致“文件格式错误”,但将我发送到错误的路径,“[文件名] 是 SYLK 文件,但无法加载”

    希望有一天这可能对其他人有所帮助。

    【讨论】:

    • 避免将问题作为答案。
    • 我没有足够高的声誉来评论现有答案,因此只能作为答案发布。否决票有点苛刻,但感谢您的参与!我现在确实有更多信息要添加,因此将尝试编辑我的第一篇文章...
    • downvote 不是要伤害你,而是审查的一部分。而且,在没有标记或否决的情况下通过此类问题可能会给审阅者带来麻烦,相信我标记更糟。我的建议是在您开始评论之前等待 50 个代表。在此之前,如果您有真正的问题,请作为单独的问题提出。
    • 谢谢,您的建议已被记录。我已经编辑了我的帖子。
    【解决方案4】:

    SYLK file format is not valid error出现在CSV文件前两个字符为大写字母I和D的情况下,可以通过以下步骤解决: 在记事本中打开文件并在第一个字符前点击撇号 (') 键。 保存文件并重新打开 MS Excel。

    【讨论】:

    • 欢迎来到 Stack Overflow! How to Answer 可以帮助您编写将被接受和赞成的答案。
    猜你喜欢
    • 1970-01-01
    • 2013-06-17
    • 1970-01-01
    • 1970-01-01
    • 2015-04-16
    • 1970-01-01
    • 2011-10-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多