質問のタイトルが少し変だったらごめんなさい。3 つの列で構成される複合主キーを使用して 500 行の Excel を作成したいと考えています。2 つの列は 1 から 50 までのランダムな int を自動的に生成し、3 番目は 01.01.2006 から 31.12.2013 までの日付です。だから私は3つの異なる組み合わせを持つ500行を持ちたい.これが私のコードです
Type excelType = Type.GetTypeFromProgID("Excel.Application");
dynamic excel = Activator.CreateInstance(excelType);
excel.visible = true;
excel.Workbooks.Add();
Random rnd = new Random();
dynamic sheet = excel.ActiveSheet;
for (int i = 1; i <= 500; i++)
{
sheet.Cells[i, "A"] = rnd.Next(1,50);
sheet.Cells[i, "B"] = rnd.Next(1,50);
sheet.Cells[i, "C"] = RandomDay();
//ここで、組み合わせが存在するかどうか、新しい組み合わせが割り当てられているかどうかを確認します
for (int j = 0; j <= i + 1; j++)
{
if ( sheet.Cells[j + 1, "A"] == sheet.Cells[i, "A"] &&
sheet.Cells[j + 1, "B"] == sheet.Cells[i, "B"] &&
sheet.Cells[j + 1, "C"] == sheet.Cells[i, "C"])
{
sheet.Cells[i, "A"] = rnd.Next(1,50);
sheet.Cells[i, "B"] = rnd.Next(1,50);
sheet.Cells[i, "C"] = RandomDay();
}
}
}
}
// ランダム日付メソッド
public static DateTime RandomDay()
{
DateTime start = new DateTime(2006, 1, 1);
DateTime end = new DateTime(2013, 12, 31);
Random gen = new Random();
int range = (end - start).Days;
return start.AddDays(gen.Next(range));
}
これが機能するかどうかは本当にわかりません。また、実行速度が遅いため、組み合わせが存在するかどうかを確認するために何度も繰り返す必要があります。誰もがより良い、より速い解決策を持っていますか? 皆さん、ありがとうございました!