我正在使用控制台应用程序写出一个逗号分隔的文件,而不是使用 Process 打开文件。这是一种将查询结果转储到 excel 中的快速而肮脏的方法。
有一段时间这工作正常,但最近我开始收到“您尝试打开的文件‘blah.csv’的格式与文件扩展名指定的格式不同”。
然后点击"is"
Excel 已检测到 blah.csv 是 SYLK 文件,但无法加载它。文件有错误或不是 SYLK 文件格式。单击“确定”尝试以其他格式打开文件。
按确定打开它,并正确显示。
我在 web 世界中看到了一些通过添加内容配置 header 来解决此问题的解决方案,但由于我正在使用进程打开它,所以我无法应用该修复程序。
我打开文件的代码:
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 的行为非常奇怪。
关于c# - 从控制台生成/打开 CSV - 文件格式错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4286511/