我想知道将Excel工作表列名转换为数字的最佳方法是什么.
我正在使用Excel Package,一个很好的库来处理.xlsx文档.遗憾的是,此库未包含此功能.
OBS:第一列A对应于此库中的数字1.
Nol*_*rin 56
此函数应适用于任意长度的列名称.
public static int GetColumnNumber(string name)
{
int number = 0;
int pow = 1;
for (int i = name.Length - 1; i >= 0; i--)
{
number += (name[i] - 'A' + 1) * pow;
pow *= 26;
}
return number;
}
Run Code Online (Sandbox Code Playgroud)
Dan*_*ner 15
几个月前我不得不处理这件事.列名的反列索引 - 也很有趣,如果你尝试用基于零的索引解决它而不是认识到这会使事情复杂化,那就变得非常麻烦.如果它是一个普通的多元数字系统,它可能会如此简单......
这是我的解决方案的简化版本作为扩展方法,没有错误处理和所有这些东西.
public static Int32 ToOneBasedIndex(this String name)
{
return name.ToUpper().
Aggregate(0, (column, letter) => 26 * column + letter - 'A' + 1);
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
21931 次 |
最近记录: |