Golang 數字轉換為Excel列A Z

2021-10-07 17:16:10 字數 2287 閱讀 9598

具體需求為匯出excel時,資料只能行數與列數只能為數字,因此在修改制定單元格時無法直觀的定位,要麼修改固定的單元格,要麼就只能通過特殊標識來循壞獲取單元格之後進行修改。或者通過excel工具包中的addrow或者addcell來插入資料。

通過以下兩種方法(遞迴和for迴圈)可以做到以下格式的轉換

map[int]map[string]string

int *****==> row

第二個map中的key是通過for拿取到的值,因此可以通過index int的方式獲取列索引。

獲取到列索引之後需要將索引轉換為a-z。

遞迴

var excelchar = string

func convertnumtochar(num int) (string, error)

k := num % 26

if k == 0

v := (num - k) / 26

col, err := convertnumtochar(v)

if err != nil

cols := col + excelchar[k]

return cols, nil

}

for迴圈
var excelchar = string

func convertnumtochars(num int) (string, error)

v = (v - k) / 26

cols = excelchar[k] + cols

}return cols, nil

}

funcexectime為計算方法執行時間
func funcexectime(methodname string, starttime time.time)
測試結果
func main() 

// 方法 convertnumtochars 的執行時間是: 0 納秒,執行開始時間是: 2020-07-02 18:40:29.3156532 +0800 cst m=+0.011461701 ,結束時間是: 2020-07-02 18:40:29.3156532 +0800 cst m=+0.011461701

// 方法 convertnumtochars 的執行時間是: 23936600 納秒,執行開始時間是: 2020-07-02 18:40:29.3156532 +0800 cst m=+0.011461701 ,結束時間是: 2020-07-02 18:40:29.3395898 +0800 cst m=+0.035398301

// 方法 convertnumtochars 的執行時間是: 23936600 納秒,執行開始時間是: 2020-07-02 18:40:29.3156532 +0800 cst m=+0.011461701 ,結束時間是: 2020-07-02 18:40:29.3395898 +0800 cst m=+0.035398301

// 方法 convertnumtochars 的執行時間是: 23936600 納秒,執行開始時間是: 2020-07-02 18:40:29.3156532 +0800 cst m=+0.011461701 ,結束時間是: 2020-07-02 18:40:29.3395898 +0800 cst m=+0.035398301

// 方法 convertnumtochars 的執行時間是: 23936600 納秒,執行開始時間是: 2020-07-02 18:40:29.3156532 +0800 cst m=+0.011461701 ,結束時間是: 2020-07-02 18:40:29.3395898 +0800 cst m=+0.035398301

// 方法 convertnumtochars 的執行時間是: 23936600 納秒,執行開始時間是: 2020-07-02 18:40:29.3156532 +0800 cst m=+0.011461701 ,結束時間是: 2020-07-02 18:40:29.3395898 +0800 cst m=+0.035398301

// pbancm // 方法 convertnumtochars 的執行時間是: 0 納秒,執行開始時間是: 2020-07-02 18:40:29.3395898 +0800 cst m=+0.035398301 ,結束時間是: 2020-07-02 18:40:29.3395898 +0800 cst m=+0.035398301

// psnmso

經過執行時間的對比,勉強可以看出for的執行效率時間是快於遞迴,但是這裡是可能是fmt的原因導致的這個差異。

從中可以看出,達到億級別的數字才有不到1秒的差距,因此兩種方式都是可以忽略時間正常執行。

將DataGrid中的資料轉換為Excel c

if gridx.tablestyles.count 0 objarr new object ivisable objarr list.toarray excelcell xst.get range excel.cells 1,1 excel.cells 1,ivisable excelcell.v...

js轉換為數字

方法主要有三種 轉換函式 強制型別轉換 利用js變數弱型別轉換。1.轉換函式 js提供了parseint 和parsefloat 兩個轉換函式。前者把值轉換成整數,後者把值轉換成浮點數。只有對string型別呼叫這些方法,這兩個函式才能正確執行 對其他型別返回的都是nan not a number ...

數字轉換為漢字

其實數字轉換成漢字的方式有多種多樣的,在我的同事中就有寫出更加簡單方便的 但是由於他的方法不易讀懂 水平不夠啊 因此在這裡我只說說我是如何實現這個功能 也是通過別人的指點之後思索出來的 思想簡要 1.數字對應的轉換成漢字,這其中不考慮任何情況只是簡單的轉換 如1000 轉換為 一千零百零十零 2.然...