0

システム内の各ユーザーを分類する必要があるレポートを準備しています。約 15,000 人のユーザーがいます。

そのため、各ユーザーを調べてさまざまな条件をチェックし、条件に基づいて各ユーザーをリストに割り当てます。

約 8 ~ 9 個のリストがあります。これは、システム内に約 8 ~ 9 のカテゴリのユーザーが存在することを意味します。

次に、これらのユーザーをわかりやすい形式で報告する必要があります。列がこれらの 8 ~ 9 のカテゴリを表し、各列ヘッダーの下にそのリストのユーザーが含まれる CSV ファイルについて考えていました。

これらすべてのリストを CSV に書き込むことはできますが、それらは上下に表示されます。読みやすく、理解しやすいように、表形式でどのように記述すればよいかわかりません。

たとえば、3 つのカテゴリのユーザーがいるとします。

category1: abc, def, ghi
category2: lmn, opq, rst
category3: uvw, xyz, adf

したがって、私の出力は次のようになります。

category1      category2      category3
abc              lmn             uvw
def              opq             rst
uvw              xyz             adf

結果をわかりやすい形式で出力する方法については、他の提案も受け付けています。

4

2 に答える 2

0

データのエクスポートまたはデータベースへの保存には、次の1つの形式のみを使用できます。

user   category
user1  category1
user1  category2
user2  category1
user2  category2

Excelやその他のレポートプラットフォームでは、このデータを必要な形式にピボットできます。たとえば、

user   category1  category2  category3
user1  x          x
user2  x                     x
于 2012-05-21T05:33:03.773 に答える
0

これらのCSVをExcelのようなもので使用する場合は、現在使用している形式が理想的だと思います。

結果を出力するには、次のようなものはどうでしょうか。

// Get categories with all users in it
// and get max count in a category across all categories
List<List<Category>> categories = GetCategoriesWithUsers();
int maxUsersInCategory = categories.Max(x => x.Count);

using (StreamWriter writer = new StreamWriter("output.csv")
{
    // Loop through each user per category
    for (int userCount = 0; userCount < maxUseresInCategory; userCount++)
    {
       string outputLine = string.Empty;

       // Loop through each category
       foreach(List<Category> category in categories)
       {
          // If category end isn't reached, add user
          if (category.Length > userCount)
          {
              outputLine += category[userCount];
          }

          outputLine += ",";
       }

       outputLine = outputLine.Remove(outputLine.Length - 1);
       writer.WriteLine(outputLine);
    }
}
于 2012-05-21T06:12:23.340 に答える