создание / открытие CSV из консоли - ошибка в неверном формате - PullRequest
27 голосов
/ 26 ноября 2010

Я записываю файл через запятую, используя консольное приложение, а затем использую Process, чтобы открыть файл. Это быстрый и грязный способ выгрузки результатов запроса в Excel.

некоторое время это работало нормально, но в последнее время я начал получать " Файл, который вы пытаетесь открыть 'blah.csv', находится в другом формате, чем указано расширением файла ".

и чем после нажатия «Да»

Excel обнаружил, что blah.csv является файлом SYLK, но не может его загрузить. Либо файл содержит ошибки, либо это не файл формата SYLK. Нажмите кнопку ОК, чтобы попытаться открыть файл в другом формате.

Нажатие ОК открывает его и отображает правильно.

Я вижу некоторые решения для этого в веб-мире с добавлением заголовка размещения контента, но, поскольку я использую процесс для его открытия, я не могу применить это исправление.

мой код для открытия файла:

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

если я открою файл в Notepad ++ и покажу все символы, он будет отображаться как обычный CSV с окончанием строки CR LF.

после некоторого расследования похоже, что строка заголовков вызывает ошибку. Если я просто напишу пустую строку перед заголовками, ошибка исчезнет. заголовки выглядят так:

заголовок1, заголовок2, заголовок3 CRLF

Ответы [ 4 ]

57 голосов
/ 26 ноября 2010

Посмотрите здесь: http://support.microsoft.com/kb/323626

кажется, что наличие идентификатора в качестве первых двух символов в строке заголовка является проблемой - на мой взгляд, довольно странное поведение из Excel.

5 голосов
/ 18 января 2012

CSV начинается с двух символов ID.Если вы окружаете символы двойными кавычками, все должно работать нормально.

2 голосов
/ 23 марта 2015

(Edited) У меня была похожая проблема - я получал точно такую ​​же ошибку, но в моем случае это произошло внезапно после нескольких месяцев частого использования. Я задавался вопросом, если проблема действительно заключается в названии столбца «ID», решение Microsoft не объясняет, почему, как заявил ОП, «некоторое время это работало нормально», а затем стало проблемой.

Я обнаружил, что в моем сценарии были некоторые ошибочные данные, поступающие из вышестоящей системы, где в чье-то имя была добавлена ​​запятая, и это делало файл .csv недействительным. Это привело к тому, что «файл в неправильном формате», но отправил меня по неправильному пути с «[имя_файла] является файлом SYLK, но не может его загрузить»

надеюсь, что это может помочь кому-то еще.

0 голосов
/ 30 августа 2016

Недопустимый формат файла SYLK возникает, когда в CSV-файле первые два символа находятся в верхнем регистре I и D. Это можно решить, выполнив следующие действия: Откройте файл в блокноте и нажмите апостроф(') перед первым знаком.Сохраните файл и снова откройте MS Excel.

...