C#:EXCEL列名、列序号之间互相转换

EXCEL的列名与列序号 之前的关系如下

A 1
B 2
C 3
D 4
E 5
F 6
G 7
H 8
I 9
J 10
K 11
L 12
M 13
N 14
O 15
P 16
Q 17
R 18
S 19
T 20
U 21
V 22
W 23
X 24
Y 25
Z 26
AA 27
AB 28
        /// 
        /// 根据给的EXCEL列序号,得出列名字母
        /// 
        /// 序号
        /// 列名
        public string ColNum2Name(int iColNum)
        {
            string result = "";

            if (iColNum < 1 || iColNum > 16384)
            {
                throw new Exception("列号超出范围");
            }

            while (iColNum > 0)
            {
                iColNum--; //列号是从1开始的,字母从0开始的
                result = (char)('A' + iColNum % 26) + result;
                iColNum /= 26;
            }
            return result;
        }

        /// 
        /// 根据给出的EXCEL列名,转换成列序号
        /// 
        /// 列名
        /// 序号
        public int ColName2Num(string sColName)
        {
            int result = 0;
            for (int i = 0; i < sColName.Length; i++)
            {
                result *= 26;
                result += sColName[i] - 'A' + 1;
            }
            return result;
        }

 

你可能感兴趣的:(C#,OFFICE-EXCEL,1024程序员节,EXCEL,列号,列名,序号)