我使用控制台应用程序写出逗号分隔文件,而不是使用Process打开文件。将查询结果转储到excel是一种快速而又脏的方法。
有一段时间这个工作正常,但最近我开始得到“你试图打开的文件'blah.csv',格式与文件扩展名指定的格式不同”。
而不是点击“是”后
Excel检测到blah.csv是一个SYLK文件,但无法加载它。文件有错误或不是SYLK文件格式。单击“确定”以尝试以其他格式打开文件。
按OK打开它,并正确显示。
我在网络世界中看到了一些添加内容处置标头的解决方案,但由于我使用进程打开它,我无法应用该修复。
我打开文件的代码:
ProcessStartInfo info = new ProcessStartInfo();
info.FileName = filePath;
info.UseShellExecute = true;
Process.Start(info);
如果我在Notepad ++中打开文件并显示所有字符,它只显示为具有CR LF行结尾的常规CSV。
经过一番调查后,看起来标题行正在触发错误。如果我只是在标题之前写一个空行,那么错误就会消失。标题看起来像这样:heading1,heading2,heading3 CRLF
答案 0 :(得分:57)
看看这里:http://support.microsoft.com/kb/323626
似乎有ID,因为标题行上的前两个字符是问题 - 在我看来,Excel中的行为非常离奇。
答案 1 :(得分:5)
CSV以两个字符ID开头。如果用双引号括起字符,它应该可以正常工作。
答案 2 :(得分:2)
(编者) 我有一个类似的问题 - 我得到了完全相同的错误,但在我的情况下,这经常在经过数月的频繁使用后发生。 我想知道这个问题是否真的是“ID”专栏标题,微软解决方案并没有解释为什么,正如OP所说,“有一段时间这个工作正常”然后成了一个问题。
我发现在我的场景中,有一些错误的数据来自上游系统,其中以某人的名字添加了逗号,这使.csv文件无效。这导致'文件格式错误'但发送错误路径,'[filename]是SYLK文件,但无法加载'
希望有一天这可能会帮助别人。
答案 3 :(得分:0)
SYLK file format is not valid error。可以通过以下步骤解决: 在记事本中打开文件,然后在第一个字符前点击撇号(')键。 保存文件并重新打开MS Excel。