開始インデックスと終了インデックスを入力として受け取る、Excel 列の名前で範囲を生成する高速関数の助けが必要です。
i.e. Generate(2, 4) -> B, C, D
最大 16,384 列の範囲を生成する必要があるため、速度は重要です。
Excel の列名を生成するための基本的なアルゴリズムは、ここでグラハムによって素晴らしく説明されています: https://stackoverflow.com/a/182924/1644733
これを C# Generate() 関数のフレームワークに入れると、次のことができます。
static List<string> Generate(int start, int end) {
List<string> listOfColumns = new List<string>();
for (int i = start; i<=end; i++) {
listOfColumns.Add(NumberToColumn(i));
}
return listOfColumns;
}
static string NumberToColumn(int col) {
string retval = "";
// cannot be greater than 16384
if (col > 16384)
return "invalid";
int dividend = col;
while (dividend > 0)
{
int leftover = (dividend - 1) % 26;
char extraletter = (char) (65 + leftover);
retval = extraletter + retval;
dividend = (int)((dividend - leftover) / 26);
}
return retval;
}
速度に関して: この種の範囲を頻繁に生成する場合は、コードの最初で 1 ~ 16384 の範囲全体でこれを 1 回実行してから、必要に応じて、結果のリストの値を直接。