将excel列字母转换为Ruby中的整数

什么是最简单的方法来转换类似excel的列字母为整数?

例如:

AB --> 27 AA --> 26 A --> 0 Z --> 25 

 def excel_col_index( str ) value = Hash[ ('A'..'Z').map.with_index.to_a ] str.chars.inject(0){ |x,c| x*26 + value[c] + 1 } end 

要么

 def excel_col_index( str ) offset = 'A'.ord - 1 str.chars.inject(0){ |x,c| x*26 + c.ord - offset } end 

我会做这样的事情:

 def column_name_to_number(column_name) multipliers = ('A'..'Z').to_a chars = column_name.split('') chars.inject(-1) { |n, c| multipliers.index(c) + (n + 1) * 26 } end 

啊没关系..

 def cell2num col val = 0 while col.length > 0 val *= 26 val += (col[0].ord - 'A'.ord + 1) col = col[1..-1] end return val - 1 end