为Excel生成列范围(c#)

我需要一个快速函数的帮助来生成一个名为Excel列的范围,它接收起始和结束索引作为input。

ie Generate(2, 4) -> B, C, D 

速度很重要,因为我需要生成多达16,384列的范围。

生成Excel列名的基本algorithm已经被Graham在这里精彩地解释了: 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的整个范围内,然后使用根据需要直接在结果列表中的值。