2012-02-29 129 views
0

我有一個字符串作爲鍵的字典,以及字符串列表作爲值。我想將這些值寫入Excel,以便按鍵位於最上面一行,並且它們的值位於相應的列中。我已經有一些代碼將寫入到頂部行的鍵,但我不知道如何做的價值觀。提前致謝!在C#中將字典寫入Excel#

 Excel.Application oXL = new Excel.Application(); 
     Excel._Workbook oWB = (Excel._Workbook)(oXL.Workbooks.Add(Missing.Value)); 
     Excel._Worksheet oSheet = (Excel._Worksheet)oWB.ActiveSheet; 
     Excel.Range oRng; 

     string[] saNames = dict.Keys.ToArray(); 

     oRng = oSheet.get_Range("A1", Missing.Value).get_Resize(1, dict.Keys.Count); 
     oRng.Value = saNames; 

     oXL.Visible = true; 
     oXL.UserControl = true; 

回答

3

是這樣的嗎?瀏覽每個鍵,將其寫入最上面的一行,然後在連續鍵的值中查看字符串。

int column = 1; // Initialize for keys. 
foreach (string key in dict.Keys) 
{ 
    int row = 1; // Initialize for values in key. 
    oSheet.Cells(row, column).Value = key; 

    foreach (string value in dict[key]) 
    { 
     row++; 
     oSheet.Cells(row,column).Value = value; 
    } 

    column++; // increment for next key. 
} 
+0

看起來恰到好處。 – zmbq 2012-02-29 07:34:21

+0

謝謝,我沒有意識到我可以迭代這樣的單元格。我以爲我必須使用範圍對象。 – user1090859 2012-02-29 19:13:56

2

我知道不是EXCEL,但如果CSV格式對您來說足夠好,那麼這裏是一個適用於我的示例。使用SystemSystem.IOSystem.Linq

public static void DictToCsv(Dictionary<string, string> dict, string filePath) 
    { 
     try 
     { 
      var csvLines = String.Join(Environment.NewLine, 
        dict.Select(d => d.Key + "," + d.Value)); 
      Directory.CreateDirectory(Path.GetDirectoryName(filePath)) 
      File.WriteAllText(filePath, csvLines); 
     } 
     catch (Exception ex) 
     { 
      logger.Error(ex.ToString()); 
     } 
    } 

當然 享受