如何实现通过列ID输出列名?

victorl · · 764 次点击
```go func getColNameWithID(id int) (res string) { if id == 0 { return "" } resByte := make([]byte, 0) idToColName(id, &resByte) return string(resByte) } func idToColName(id int, res *[]byte) { m := id / 26 n := id % 26 if m > 0 && n == 0 { m-- n = 26 } if m > 0 { idToColName(m, res) } if n > 0 { *res = append(*res, byte('A'+n-1)) } } func colNameToID(s string) (n int, err error) { if len(s) == 0 { return 0, fmt.Errorf("syntaxError") } for _, c := range []byte(s) { var d byte switch { case 'a' <= c && c <= 'z': d = c - 'a' + 1 case 'A' <= c && c <= 'Z': d = c - 'A' + 1 default: return 0, fmt.Errorf("syntaxError:%s", s) } n *= 26 n += int(d) } return n, nil } ```
#5
更多评论
``` func ExcelConvertTitleToNum(s string) (res int) { res = 1 //输入验证 if s == "" { return 0 } ss := []byte(s) length := len(ss) fmt.Println() for i := 0; i < length; i++ { res = i*26 + int(ss[i]+1)%int('A') } return } ```
#1
你这转换不对,当s="AAA"时你算出的结果是53,正确结果是703。我需要的是从703到AAA的转换。
#2