Вот краткая реализация с использованием LINQ.
static IEnumerable<string> GetExcelStrings()
{
string[] alphabet = { string.Empty, "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z" };
return from c1 in alphabet
from c2 in alphabet
from c3 in alphabet.Skip(1) // c3 is never empty
where c1 == string.Empty || c2 != string.Empty // only allow c2 to be empty if c1 is also empty
select c1 + c2 + c3;
}
Это генерирует от A
до Z
, затем AA
до ZZ
, затем AAA
до ZZZ
.
На моем ПК вызов GetExcelStrings().ToArray()
занимает около 30 мс. После этого вы можете ссылаться на этот массив строк, если вам это понадобится тысячи раз.