generare / aprire CSV da console – il file ha un errore di formato errato

Sto scrivendo un file separato da virgole usando un’app console e poi usando Process per aprire il file. È un modo rapido e sporco per scaricare i risultati di una query in Excel.

per un po ‘ha funzionato, ma ultimamente ho iniziato a ottenere ” Il file che stai tentando di aprire” blah.csv “, è in un formato diverso da quello specificato dall’estensione del file “.

e dopo aver fatto clic su “Sì”

Excel ha rilevato che blah.csv è un file SYLK, ma non può caricarlo. Il file ha errori o non è un formato di file SYLK. Fare clic su OK per provare ad aprire il file in un formato diverso.

Premendo OK si apre e viene visualizzato correttamente.

Vedo alcune soluzioni per questo nel mondo del web con l’aggiunta dell’intestazione content-disposition, ma poiché sto usando un Processo per aprirlo, non posso applicare quella correzione.

il mio codice per aprire il file:

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

se apro il file in Notepad ++ e mostro tutti i caratteri, viene semplicemente mostrato come normale CSV con terminazioni di linea CR LF.

dopo alcune indagini, sembra che la linea dei titoli stia innescando l’errore. Se scrivo semplicemente una riga vuota prima dei titoli, l’errore scompare. i titoli assomigliano a questo:

rubrica 1, rubrica 2, rubrica 3 CRLF

Dai un’occhiata qui: http://support.microsoft.com/kb/323626

sembra avere l’ID come i primi due caratteri nella riga di intestazione è il problema – il comportamento piuttosto bizzarro da Excel a mio parere.

Il CSV inizia con l’ID di due caratteri. Se si circondano i personaggi con virgolette doppie, dovrebbe funzionare correttamente.

(MODIFICATO) Ho avuto un problema simile: stavo ottenendo esattamente lo stesso errore, ma nel mio caso questo si era improvvisamente verificato dopo mesi di uso frequente. Mi chiedevo se il problema fosse davvero il titolo della colonna “ID”, la soluzione di Microsofts non spiega perché, come ha affermato l’OP, “per un po ‘questo ha funzionato bene” e poi è diventato un problema.

Ho trovato nel mio scenario alcuni dati errati provenienti da un sistema upstream in cui era stata aggiunta una virgola nel nome di qualcuno e questo stava invalidando il file .csv. Ciò ha causato il “errore di formato del file errato”, ma mi ha inviato lungo il percorso sbagliato con “[nome file] è un file SYLK, ma non è ansible caricarlo”

spero che questo possa aiutare qualcun altro un giorno.

Il formato del file SYLK non è un errore valido quando il file CSV ha i primi due caratteri sono in maiuscolo I e D. Può essere risolto con i seguenti passaggi: Aprire il file in Blocco note e premere il tasto apostrofo (‘) prima del 1 ° carattere. Salvare il file e riaprire MS Excel.