2017-10-16 36 views
0

我產生不同的CSV文件的頭,我的用戶可以看到的格式創建具有這並不讓C#中的CSV「損壞」用Excel

var output = new MemoryStream() 
var writer = new StreamWriter(output, Encoding.UTF8); 
//this function gets the row depending of the enumerator name in this format a;b;c;d 
var header = ModelosCsv.GetCsvByEnum("HeadRowFileLoad"); 
writer.WriteLine(header); 
writer.Flush(); 
output.Position = 0; 
return File(output, "application/csv", "format.csv"); 

的代碼是否正確,但如果他們創建CSV用excel打開CSV並保存,excel會覆蓋所有的「;」爲三重空間。 如果我用記事本++編輯結果並放回「;」 excel不會再這樣做。

我已用Excel打開這兩個歸檔,並點擊「另存爲」,第一個(由C#新生成的)被設置爲默認爲「文本存檔」被設置爲CSV第二個(由記事本++編輯)。

我是否缺少代碼? 我怎麼能阻止excel搞亂我的檔案?

+0

你在哪裏關閉內存流..?你爲什麼設置輸出位置..?沒有必要... – MethodMan

+0

Excel不會破壞任何東西。你爲什麼不用EPPlus創建一個* real * Excel文件? –

+0

至於Excel,它不知道代碼使用的字段,行,文本,小數點,分隔符的類型。當你在命令行中傳遞文件時,它也不會問。它將使用*用戶的*語言環境設置,特別是小數點,千位和*列表*分隔符來讀取未知文件。當您通過「插入數據」對話框打開CSV時,您將看到一個預覽,允許您在出現錯誤時編輯設置 –

回答

0

我發現這個解決方案回答問題 Export to CSV using MVC, C# and jQuery

 var header = ModelosCsv.GetCsvByEnum("HeadRowFileLoad"); 

     return File(new System.Text.UTF8Encoding().GetBytes(header), "application/csv", "format.csv"); 

這樣的Excel標識歸檔文件爲CSV和編輯不會打破的格式。