2013-07-02 52 views
1

使用ASP.NET從服務器端創建包含日文字符(UTF-8字符集)的CSV文件。爲什麼MS Excel無法正確打開內容中包含日文字符的CSV文件?

代碼:

public void ExportToCsv_Click(object sender, EventArgs e) 
    { 
     try 
     { 
     string sContents = string.Empty; 
     string sTemp; 

     for (int k = 1; k <= (ObjList.Columns.Count - 1); k++) 
     { 
      sContents += ObjList.HeaderRow.Cells[k].Text + ","; 
     } 

     sContents += "\r\n"; 

     for (int i = 0; i <= (ObjList.Rows.Count - 1); i++) 
     { 
      for (int j = 1; j <= (ObjList.Columns.Count - 1); j++) 
      { 
       sTemp = (ObjList.Rows[i].Cells[j].Text.ToString()); 
       if (sTemp == "&nbsp;") 
        sTemp = ""; 
       if (j < ObjList.Columns.Count - 1) 
        sTemp = (sTemp + ","); 
       sContents += sTemp; 
      } 
      sContents += "\r\n"; 
     } 

     Response.Clear(); 
     Response.ClearHeaders(); 
     Response.ClearContent(); 

     Response.AddHeader("Content-disposition", "attachment; filename=" + "partslist.csv"); 
     Response.ContentType = "application/csv"; 
     Response.Charset = "UTF-8"; 
     Response.ContentEncoding = System.Text.Encoding.UTF8 ; 

     Response.Write(sContents); 
     Response.Flush(); 
     Response.End(); 
     } 
     catch (Exception ex) 
     { 
    throw new Exception(ex.Message); 
    } 
    } 

但是,當該文件在Microsoft Excel 2003中打開,它不顯示文件內容適當。

如何使excel正確打開這樣的文件。 幫助將不勝感激。

回答

0

遵循以下步驟:

  • 菜單 - >數據 - > GetExternal數據 - >從文本
  • 使用文件對話框
  • 在文本導入嚮導中選擇您的CSV,第1步,選擇「 65001:Unicode(UTF-8)「作爲文件來源。
+0

一種使用宏自動執行此操作的方法在此處介紹:http://stackoverflow.com/a/9772534/2496333 –

0

Excel使用SJIS(Shift JIS)作爲默認編碼。
您可以嘗試將UTF-8轉換爲SJIS或使用UTF-8中的BOM創建CSV文件。
我能夠打開帶有BOM的UTF-8 csv文件。

+0

我是新手導出CSV文件。你能告訴我如何用BOM打開UTF-8 CSV格式。我的意思是,要指定什麼以及在哪裏指定? –

1

只需在開頭添加\xfeff即可。