Excel如何动态获取列名

时间:2021-10-11 09:25:24

      遇到一个动态列,N行数据的求和,但是求和时需要Excel列名(A,B,C。。。)当时觉得这太非常难了。后来仔细研究了下Excel列名,都是从A到Z,然后AA再到AZ,以此类推。

      如此的话就好弄了。通过ASCII码来获取字母。

                foreach (var item in dicColumns)
                {
                    var subTotal = totalRow.CreateCell(item.Key);
                    subTotal.SetCellType(NPOI.SS.UserModel.CellType.Numeric);
                    byte[] array = new byte[1];
                    string strColName = string.Empty;
                    if (item.Key >= 26)
                    {
                        int intGoup = item.Key  / 26;
                        
                        array[0] = (byte)(64 + intGoup); //ASCII码强制转换二进制
                        strColName += Convert.ToString(System.Text.Encoding.ASCII.GetString(array));
                        array[0] = (byte)(65 + (item.Key % 26)); //ASCII码强制转换二进制
                        strColName += Convert.ToString(System.Text.Encoding.ASCII.GetString(array));
                    }
                    else
                    {
                        array[0] = (byte)(64 + item.Key + 1); //ASCII码强制转换二进制
                        strColName = Convert.ToString(System.Text.Encoding.ASCII.GetString(array));
                    }
                 
                    subTotal.SetCellFormula("sum(" + strColName + "2" + " : " + strColName + intLastRowIndex + ")");
                }

     小小学习经历,但是我也度娘了一会,结果却没找到。希望此段代码能帮助有需要的人。如果大家有更好的解决方法也可以告知。多谢。