2012-02-29 11 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

+0

ありがとう、私はちょうどそのような細胞を反復することができるか分からなかった。私は範囲オブジェクトを使用しなければならないと思った。 – user1090859

2

私はEXCELではないことは知っていますが、CSV形式が十分であれば、ここでは私のために働いた例があります。 SystemSystem.IO

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()); 
     } 
    } 

System.Linqを使用して、もちろん は