2011-04-26 3 views
0

これは非常に簡単だと確信していますが、私はこの権利を得ることはできません。 私は、ユーザーのICollectionを構築しました。このコレクションには1つ以上のコレクションが含まれています。 これで、このコレクションをループして、各ユーザーに変数を割り当てて、スプレッドシートを記入することができます。現時点ではC#コレクションをループして各オブジェクトを変数に割り当てる

私はこのコードを持っている:

string username = null; 

     foreach (var user in dailyReport) 
     { 
      username = user.UserName; 
     } 

     Cell cell= worksheet.Cells["B5"]; 
     cell.PutValue(username); 

が今、明らかにこれはただのセルB5にコレクションの最後のユーザを置きます! すべてのuser.UserNamesを収集して、B5、B6、B7などに配置する方法を教えてください。ユーザー名のリストを取得するには

答えて

0

あなたはforeach内の値を配置する必要がありますループ。あなたが求めている具体的なことは、コレクション内のすべての値に対して異なる変数を取得することは不可能であり、あなたが望むものではありません。迅速な応答のための

string column = "B"; // or whatever your column is 
int row = 1; // or whatever your starting value is 

foreach (var user in dailyReport) 
{ 
    string username = user.UserName; 
    string cellAddress = String.Format("{0}{1}", column, row); 
    Cell cell = worksheet.Cells[cellAddress]; 

    cell.PutValue(username); 

    row++; // make sure to increment the row, or every username goes in the same cell 
} 
+0

感謝。これは私の望むように機能し、あなたはそれを非常にはっきりと説明しました。 @ Tony Lukasavageにもお答えいただき、ありがとうございました。非常にクリーンなコード! – freerider11

1

List<string> userNames = dailyReport.Select(x=> x.UserName).ToList(); 

代わりにあなたが直接ループに割り当てを単に行うことができます。

int index = 5; 
    foreach (var user in dailyReport) 
    { 
     Cell cell= worksheet.Cells["B"+ index.ToString()]; 
     cell.PutValue(user.UserName); 
     index++; 
    } 
0
int i = 5; 
foreach (var user in dailyReport) 
{ 
    worksheet.Cells["B" + (i++).ToString()].PutValue(user.UserName); 
} 
関連する問題