2015-05-06 34 views
0

有什麼簡單的方法可以從DataTable中創建Excel文件,而無需使用像ClosedXML這樣的特殊庫?無需特殊庫的DataTable到Excel?

我曾嘗試下面的代碼:

using (StreamWriter sw = new StreamWriter(pathAndFilename, false)) 
{ 
    for (int i = 0; i < datatable.Columns.Count; i++) 
    { 
     colum = datatable.Columns[i]; 
     sw.Write(colum); 

     if (i < datatable.Columns.Count - 1) 
      sw.Write(","); 
    } 
    sw.Write(sw.NewLine); 

    foreach (DataRow dr in datatable.Rows) 
    { 
     for (int i = 0; i < datatable.Columns.Count; i++) 
     { 
      colum = datatable.Columns[i]; 

      if (!Convert.IsDBNull(dr[i])) 
       sw.Write(dr[i]); 

      if (i < datatable.Columns.Count - 1) 
       sw.Write(","); 
     } 
     sw.Write(sw.NewLine); 
    } 
} 

此代碼將寫不過所有一行的內容的每一行的第一個單元格。

+0

看起來它會嘗試寫一個csv文件。不是一個Excel格式的文件。您將不會在文檔中格式化數據。如果沒關係,你的表不包含任何字符串數據,你所擁有的代碼應該可以很好地使用'.csv'擴展名 –

+0

如果一個單元格包含一個逗號,你可以用雙引號將這個單元格寫出來:''兩個「' – DrKoch

回答

0

您的代碼不生成Excel文件,它生成一個CSV文件。
當你說它將所有內容寫入一行時,可能是因爲區域設置使用(,而不是;)作爲分隔符。

現在回到你的問題,產生一個Excel文件,你有幾種選擇:

  1. 使用外部庫(這是不是你想要的)
  2. 使用Excel互操作的庫(與Excel安裝,或可用小redistributable package