从控制台生成/打开CSV文件格式错误

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

有一段时间这工作得很好,但最近我开始得到“ 你试图打开的文件'blah.csv',是在不同的格式比指定的文件扩展名 ”。

并点击“是”后

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

按确定打开它,并正确显示。

我看到一些解决scheme,在networking世界添加内容处置标题,但由于我使用一个进程打开它,我不能应用该修复程序。

我的代码打开文件:

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

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

经过一番调查,似乎标题行触发了错误。 如果我只是在标题前写一个空行,错误就会消失。 标题看起来像这样:

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

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

它似乎有ID作为标题行的前两个字符是问题 – 在我看来,从Excel的奇怪的行为。

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

(编辑)我有一个类似的问题 – 我得到了完全相同的错误,但在我的情况下,经过几个月频繁使用突然发生。 我想知道这个问题是否真的是“ID”专栏的标题,微软的解决scheme并没有解释为什么,如同OP所说,“一段时间以后这个工作正常”,然后成了一个问题。

我发现在我的场景中,有一些来自上游系统的错误数据,其中以某人的名义添加了逗号,这导致.csv文件无效。 这导致'文件是错误的格式错误',但发送了错误的path与'[文件名]是一个SYLK文件,但无法加载它'

希望这可能有助于别人有一天。

当CSV文件的前两个字符是大写字母I和D时, SYLK文件格式无效 。可以通过以下步骤解决:在记事本中打开文件并在第一个字符前打撇号(')键。 保存该文件并重新打开MS Excel。